单列集合
双列集合(键值对形式)
Collection接口常用方法因为Collection接口无法直接实例化,因此此处使用实现了Collection接口的List类来演示
List list = new ArrayList();
list.add("jack");
list.add(10);
list.add(true);
System.out.println(list);
Integer d = (Integer) list.get(1);
//删除指定元素
list.remove(d);
System.out.println(list);
//contains:查找元素是否存在
System.out.println(list.contains("jack"));
//获取元素格式
System.out.println(list.size());
//isEmpty:判断是否为空
System.out.println(list.isEmpty());
//clear:清空
list.clear();
System.out.println(list);
//addAll:添加多个元素
ArrayList list2 = new ArrayList();
list2.add("西游记");
list2.add("西游记2");
list.addAll(list2);
System.out.println(list);
//containsAll:查找多个元素是否都存在
System.out.println(list.containsAll(list2));
//删除多个元素
list.removeAll(list2);
System.out.println(list);
ArrayList
1.ArrayList是由数组来实现数据存储的,
2.ArrayList基本等同于Vector,除了ArrayList是线程不安全的(执行效率高),有源码分析没有关键字synchronized修饰,在多线程情况下不建议使用ArrayList
ArrayList的底层 *** 作机制源码分析:
1)ArrayList中维护了一个Object类型的数组elementData,ArrayList使用这个数组来存储数据,所以说ArrayList底层是一个数组
transient Object[] elementData; //transient 有瞬间,短暂的意思,该关键字表示其所修饰的属性不会被序列化
如果使用的是无参构造,则初始的elementData容量为0,第1次添加,则将其扩容为10,后面再次扩容则扩容为原来的1.5倍
3)如果使用的是指定大小的构造器,则elementData的初始容量为指定大小,后面在扩容则扩容为原来的1.5倍
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)