List Set Map
来源:互联网 发布:超级基因优化液贴吧 编辑:程序博客网 时间:2024/06/10 23:58
=========List Set Map初始容量和扩容=========
初始大小:调用无参构造函数时默认的容量
加载因子:超过 (当前容量*加载因子) 时会进行扩容
扩容因子:扩容时增加的容量为 (当前容量*扩容因子)
一般而言, 以哈希表 (链表+数组) 作为底层数据结构的容器, 当元素超过加载因子时会进行扩容,如HashMap,HashSet
以数组作为底层数据结构的容器, 当元素超过数组大小时会进行扩容,如ArrayList
以链表作为底层数据结构的容器, 容量没有限制, 不会进行扩容,如LinkedList,TreeMap
请为集合指定初始容量
出自:http://blog.csdn.net/chenssy/article/details/38373833
出自:http://blog.csdn.net/chenssy/article/details/38373833
============================线程安全的Map========================================
1.数组和链表
数组查询速度快,删除和插入需要移动元素。ArrayList
链表删除和插入快,查村需要从第一个元素开始直到找到需要的元素为止。LinkedList
数组查询速度快,删除和插入需要移动元素。ArrayList
链表删除和插入快,查村需要从第一个元素开始直到找到需要的元素为止。LinkedList
2.synchronizedMap线程安全
Map m = Collections.synchronizedMap(new HashMap(...));
Map m = Collections.synchronizedMap(new HashMap(...));
更好的选择:ConcurrentHashMap
java5中新增了ConcurrentMap接口和它的一个实现类ConcurrentHashMap。
ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制。
Hashtable中采用的锁机制是一次锁住整个hash表,从而同一时刻只能由一个线程对其进行操作;
而ConcurrentHashMap中则是一次锁住一个桶。
ConcurrentHashMap默认将hash表分为16个桶,诸如get,put,remove等常用操作只锁当前需要用到的桶。
这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。
java5中新增了ConcurrentMap接口和它的一个实现类ConcurrentHashMap。
ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制。
Hashtable中采用的锁机制是一次锁住整个hash表,从而同一时刻只能由一个线程对其进行操作;
而ConcurrentHashMap中则是一次锁住一个桶。
ConcurrentHashMap默认将hash表分为16个桶,诸如get,put,remove等常用操作只锁当前需要用到的桶。
这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。
上面说到的16个线程指的是写线程,而读操作大部分时候都不需要用到锁。只有在size等操作时才需要锁住整个hash表。
转载 http://m.blog.csdn.net/article/details?id=50926227
阅读全文
0 0
- List,set,Map
- Set、List、Map区别
- Set List Map总结
- List,Map,Set,容器
- map list set 区别
- List , Map . Set 类
- 关于set,list,map
- Set,Map,List
- JAVA---List,Map,Set
- map set list 区别
- List Set Map
- list set map区别
- list/map/set 区别
- map set vector list
- map,set,list区别
- list map set区别
- Collection List Set Map
- SET MAP LIST
- 关于String str1 = "123" 和 String str2 = new String("123")内存分析
- 基于matlab的梯度下降法实现线性回归
- Ajax学习笔记
- React基础知识之Ref回调函数处理
- python机器学习实战之 Decision Tree For Titanic in Kaggle
- List Set Map
- EASYUI TREE (更换CSS统一定义的图片)
- Android Activity切换时出现的白色闪屏解决
- python基本语法:序列
- 解决windows10 wireshark无法抓取发出去的包只能抓取接受数据包
- C++ const相关
- 十三周 Dynamic programming counting bits
- CentOS 7中源码安装MySQL 5.7.6+详细教程
- hdu 2141