JAVA 集合类整理

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。

 

posted on 2017-10-18 15:31  ViiJay  阅读(217)  评论(0编辑  收藏  举报

导航