单列集合
双列集合(键值对形式)
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);
List接口常用实现类
ArrayList
1.ArrayList是由数组来实现数据存储的,
2.ArrayList基本等同于Vector,除了ArrayList是线程不安全的(执行效率高),由源码分析没有关键字synchronized修饰,在多线程情况下不建议使用ArrayList ,可以考虑使用线程安全的Vector
ArrayList的底层操作机制源码分析:
1)ArrayList中维护了一个Object类型的数组elementData,ArrayList使用这个数组来存储数据,所以说ArrayList底层是一个数组
transient Object[] elementData; //transient 有瞬间,短暂的意思,该关键字表示其所修饰的属性不会被序列化
如果使用的是无参构造,则初始的elementData容量为0,第1次添加,则将其扩容为10,后面再次扩容则扩容为原来的1.5倍
3)如果使用的是指定大小的构造器,则elementData的初始容量为指定大小,后面在扩容则扩容为原来的1.5倍
ArrayList与Vector的比较 ArrayList与LinkedList的比较这两个都是线程不安全的
Set接口常用实现类关于LinkedList的说明:
LinkedList底层实现了双向链表和双端队列特点。 可以添加任意元素(元素可以重复),包括null。 线程不安全,没有实现同步。
Set接口基本介绍:
1)无序(添加和取出的顺序不一致),没有索引。
2)不允许重复元素,所以最多包含一个null。
Set接口的常用方法:
和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样。
Set接口的遍历方式:
同Collection的遍历方式一样,因为Set接口是Collection接口的子接口。
1.可以使用迭代器
2.增强for
3.不能使用索引的方式来获取



