List集合
List集合概述
有序集合(也称序列)用户可以精确控制列表的每一个元素的位置插入,用户可以通过整数索引访问元素,并搜索列表中的元素
与set集合不同,列表通常允许重复的元素
List集合的特点
有序:存储和取出元素顺序一致
可重复:存储的元素可以重复
List集合实现类特点
ArrayList:查询快,增删慢的一种数组
LinkedList:查询慢,增删快的一种链表
ArrayList扩容机制
ArrayList数组首先对传进来的初始化参数initalCapcity(初始容量)进行判断,参数如果为0,则初始化为一个空数组
如果不等于0,则初始化一个容量为10的数组
扩容时机:
当数组大小大于初始容量的时候,就会进行扩容,扩容为原来的1.5倍
扩容方式:
会将原数组拷贝到一个新数组里,修改原数组指向新数组,原数组被抛弃,会被GC回收
Set集合:
TreeSet集合特点:
元素有序,这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体方法取决于构造方法
TreeSet(); 根据元素的自然派进行排序
TreeSet(Comparator comparator); 根据指定得比较器进行排序
注:TreeSet要遍历时候必须在实现类实现Comparable接口,重写ComparaTo方法
Map集合
特点:
无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
遍历
1. 先取出保存所有键的Set,再遍历Set即可(2种)
2. 先取出保存所有Entry的Set,再遍历此Set即可
区别
HashMap与Hashtable之间的区别
HashMap非同步 线程不安全
Hashtable同步 线程安全 同步既排队
HashMap只允许一条记录的键为NULL
TreeMap不允许键为NULL