Collection接口下有List接口和set接口
特点:
1.可以存放不同类型的数据,而数组只能存放固定类型的数据
2.在使用ArrayList子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容(newlength = oldlength * 1.5)
我们可以看到这里进行了右移操作,oldCapacity=10,oldCapacity>>1=5,所以扩容后的长度为15
add(Object e):
要求必须传入的参数是Object对象,因此在写入基本数据类型的时候,包含了自动拆箱和装箱的过程
1 public class CollectionDemo { 2 public static void main(String[] args) { 3 //Collection是接口,不能实例化,要实例化可实现该接口的子类 4 Collection collection = new ArrayList(); 5 /** 6 * 当调用collection中add(Object e)方法并传入基本数据类型时: 7 * 传入的基本数据类型不属于Object类型,会自动装箱成对应的包装类 8 * 这其中包含了基本数据类型隐式转换成包装类的过程 9 */ 10 collection.add(1); 11 collection.add(true); 12 collection.add(1.23); 13 collection.add("abc"); 14 } 15 }
add(int index,E element):
在指定下标处添加元素,该方法是ArrayList中的方法,在使用时collection对象要进行强转
1 public class CollectionDemo { 2 public static void main(String[] args) { 3 Collection collection = new ArrayList(); 4 collection.add(1); 5 collection.add(true); 6 //该add方法是ArrayList中的 7 ((ArrayList)collection).add(0,0); 8 } 9 }
addAll(Collection c):
添加另一个集合的元素到此集合中
1 public class CollectionDemo { 2 public static void main(String[] args) { 3 Collection collection = new ArrayList(); 4 collection.add(1); 5 collection.add(true); 6 Collection collection1 = new ArrayList(); 7 collection1.add(2); 8 collection1.add(false); 9 collection.addAll(collection1); 10 System.out.println(collection); 11 } 12 }
clear():
只是清空集合中的元素,但是此集合对象并没有被回收
contains(Object b):
判断集合中是否包含指定的元素值
containsAll(Collection<?> c):
判断此集合中是否包含另一个集合
isEmpty ():
判断集合是否为空
remove(Object o):
删除指定元素
removeAll(Collection<?> c):
删除所有集合元素
retainAll(Collection<?> c):
若集合中拥有另一个集合的所有元素,返回true,否则,返回false
size():
返回当前集合的大小
toArray():
将集合转换成数组