ArrayList集合

本文详细介绍了Java中集合框架的基本概念及使用方法,包括ArrayList等集合类的创建与操作,如添加、获取、设置等方法,并提供了集合作为参数的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记得导包

1.数据类型<集合存储的数据类型> 变量名 =new 数据类型<集合存储的数据类型> ();

   ArrayList<String> array=new ArrayList<String>();


注意:集合只存储引用类型,不存储基本类型!!!!  

eg:  ArrayList<Integer> 

         ArrayList<Person> p   //Person为自定义的类型



集合中方法:

add(Object obj)

get(int index)

size() //返回集合长度

add(int 索引,存储元素)   //将元素添加到指定的索引上,原来位置上的往后移

set(int索引,修改后的元素)

remove(索引)

clear()//清空



集合作为参数:

eg:  ArrayList<Student> array=new ArrayList<Student>();

  声明方法  public static void add(ArrayList<Student> array);

 调用方法 add(array);






掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880004 注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:name:Person对象的姓名,id:Person对象的身份证号) 主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为namesArrayList集合; 2)按顺序集合添加5个字符对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的person的HashMap集合; 2)往集合添加5个"键-值"对象: "id"-"1"; "name"-"张三"; "sex"-"男"; "age"-"25"; "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的List、Set、Map有哪些不同? 2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?
### 关于Java `ArrayList`集合的使用方法、特性及示例 #### 方法概述 对于向`ArrayList`中添加元素的操作,可以通过调用`add()`方法来完成。此操作支持两种形式:一种是在列表末尾追加单个元素;另一种是指定位置插入元素[^1]。 ```java // 创建一个新的ArrayList实例 ArrayList<String> lists = new ArrayList<>(); lists.add("java"); // 向列表末尾添加字符串 "java" lists.add(0, "C"); // 将字符串 "C" 插入到索引为0的位置 lists.add(1, "python"); // 将字符串 "python" 插入到索引为1的位置 System.out.println(lists); ``` 除了上述提到的`add()`方法外,还有用于替换已有元素的方法——`set(int index,E element)`。该方法接收两个参数:目标位置以及新的值,并返回被覆盖掉的老值[^2]。 ```java import java.util.ArrayList; public class Main { public static void main(String[] args){ ArrayList<String> list = new ArrayList<>(); list.add("old"); String oldValue = list.set(0,"new"); // 替换第一个位置上的元素 System.out.println(oldValue); // 输出:"old" System.out.println(list.get(0)); // 输出:"new" } } ``` 另外一个重要功能是由`addAll(Collection<? extends E> c)`所提供的批量增加能力。这使得开发者能够一次性将另一个集合中的全部成员加入当前`ArrayList`之中[^3]。 ```java ArrayList<Integer> originalList = new ArrayList<>(Arrays.asList(1, 2)); ArrayList<Integer> additionalElements = new ArrayList<>(Arrays.asList(3, 4)); originalList.addAll(additionalElements); for(Integer num : originalList) { System.out.print(num + " "); } // 打印结果应为:“1 2 3 4 ” ``` #### 特性描述 - **动态大小**:与固定尺寸的传统数组相比,`ArrayList`具备灵活调整容量的能力,在必要时自动增长内部结构以容纳更多项。 - **存储类型**:尽管不能直接保存原始数据类型(如int),但是通过对应的封装器类(例如Integer)间接实现这一点成为可能。此外也适用于用户自定义的对象实例。 - **索引访问效率高**:由于底层采用连续内存布局,因此依据特定下标获取或修改项目非常迅速,平均情况下只需常数级别的时间开销O(1)[^4]。 - **维护插入顺序**:每当有新条目进来都会按照实际发生的先后次序排列,不会打乱原有的序列关系。 - **允许多重出现相同的数据点**:即同一个实体可以在不同的地方多次存在而不会引发异常情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值