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。

 

转载于:https://www.cnblogs.com/vijayblog/p/7686935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值