1.如果并不知道程序运行时会需要多少对象,或者需要 更复杂方式存储对象——可以使用Java集合框架
2.Collection特点:
- 存放的是单一值
- 可以存放不同类型的数据,而数组只能存放固定类型的数据
- 当使用ArrayList子类实现的时候,初始化的长度是10,当长度不够的时候,会进行扩容操作。
3.Collection继承关系框架图
4.Collection、List、Set和Map存储数据的区别
- Collection 接口存储一组不唯一,无序的对象
- List 接口存储一组不唯一,有序(插入顺序)的对象
- Set 接口存储一组唯一,无序的对象
- Map接口存储一组键值对象,提供key到value的映射
5.Collection的常用api方法
5.1 增加数据的方法
-
add:要求必须传入的参数是Object对象,因此当写入基本数据类型的时候,包含了自动拆箱和自动装箱的过程。
-
addAll:添加另一个集合的元素到此集合中
5.2 删除数据的方法
-
clear:只是清空集合中的元素,但是此集合对象并没有被回收
-
remove:删除指定元素
-
removeAll:删除集合元素,集合A-集合B的关系,集合A中没有集合B的元素,也能删除成功,只要删除1各元素,也返回true。如果一个都没有删除,返回false
5.3 查询数据的方法
- isEmpty:判断集合是否等于空
- contains:判断集合中是否包含元素中的指定值
- containAll:判断此集合中是否包含另外一个集合
- retainAll:保留集合A∩集合B的值,如果集合A的值更改为true,如果没有更改为false
5.4 集合转数组的方法
- toArray:将集合转换为数组
Collection collection=new ArrayList();
//1是自动装箱
collection.add(1);
collection.add(true);
collection.add(1.23);
collection.add("123");
System.ou t.println(collection);
//Collection中没有add(index,object)方法,但是ArrayList有add(index,object),所以需要强制转换
((ArrayList) collection).add(0, "lsn");
System.out.println(collection);
Collection collection1=new ArrayList();
collection1.add("12");
collection1.add("34");
collection1.add("56");
((ArrayList) collection).addAll(2, collection1);
System.out.println(collection);
System.out.println(collection.size());
System.out.println(collection.contains("123"));
System.out.println(collection.containsAll(collection1));
System.out.println(collection.remove("123"));
System.out.println(collection);
collection1.add("1234");
//retainAll取前者集合和后者集合的交集。如果前者集合发生改变,返回true,如果没有改变,返回false。前者集合变为交集的集合。
System.out.println(collection.retainAll(collection1));
System.out.println(collection);
Object[] objects = collection.toArray();
collection.toArray();
collection.clear();
System.out.println(collection1);
-------------------------------------------
输出结果:
[1, true, 1.23, 123]
[lsn, 1, true, 1.23, 123]
[lsn, 1, 12, 34, 56, true, 1.23, 123]
8
true
true
true
[lsn, 1, 12, 34, 56, true, 1.23]
true
[12, 34, 56]
[12, 34, 56, 1234]