ArrayList:
1.结构是数组结构;
2.增长长度=当前长度>>1
3.set方法获取的是之前的值
4.sublist方法返回的是内部类实例,内部类SubList。
5.默认长度是10。
6.最大长度为Integer.MAX_VALUE - 8,因为一些虚拟机会存储一些头部信息到数组中,需要预留出来。
LinkedList:
1.数据结构是双向链表,每个元素都有前一节点和后一节点,修改效率高。
2.modcount作用,使用迭代器遍历元素保证数据准确度,类似version作用,修改过数据报CurrentModify。。Exception(),针对数据安全可以使用迭代器查找数据。
List集合和子集合有Listiterator,可以从后往前遍历,可以修改,可以新增。
3.可以实现队列和栈的功能。
vector:
1.数据结构是数组和ArrayList一样,最大的不同是vector是线程安全的,方法是同步的。
2.扩容规则是按照本省长度增加一倍,而ArrayList是50%.
hashmap:
1.数据结构是哈希表,其实是数组,哈希存取,数据元素针对碰撞数据设计为链表,由next为下一个元素体现。
2.无参构造函数默认长度为16,负载因子是0.75,最大表长度为16*0.75=12。Map初始化会计算threshold,数据超过会进行2倍扩容,同时重hash整个表的数据。
3.非线程安全,多线程下慎用;可以使用Map<String, String> hashMap = Collections.synchronizedMap(new HashMap<String,String>());获取安全的map,不过只能针对put,get等原子操作保证安全,推荐使用concurrentHashMap。
4.对map执行删除操作尽量使用迭代器自带的remove方法,或者删除后进行索引处理,否则针对特别的一些数据会产生数据错误。参考:http://blog.csdn.net/ghsau/article/details/9347357
5.可以通过entrySet或keySet来遍历map。