随笔分类 - 集合
摘要:HashMap,HashTable,ConcurrentHash的共同点和区别 HashMap 底层由链表+数组+红黑树实现 可以存储null键和null值 线性不安全 初始容量为16,扩容每次都是2的n次幂 加载因子为0.75,当Map中元素总数超过Entry数组的0.75,触发扩容操作. 并发情
阅读全文
摘要:数据结构 HashMap 采用的数据结构 = 数组(主) + 单链表(副) HashMap的主结构类似于一个数组,添加值时通过key确定储存位置.,每个位置是一个Entry的数据结构,该结构可组成链表,当发生冲突时,相同hash值的键值对会组成链表. 这种数组+链表的组合形式大部分情况下都能有不错的
阅读全文
摘要:https://blog.csdn.net/swpu_ocean/article/details/88917958 HashMap的线程不安全体现在会造成死循环、数据丢失、数据覆盖这些问题。其中死循环和数据丢失是在JDK1.7中出现的问题,在JDK1.8中已经得到解决,然而1.8中仍会有数据覆盖这样
阅读全文
摘要:https://mp.weixin.qq.com/s/EBO4pfd6FEq_R-qZU73U9w 1. 循环list中的所有元素然后删除重复 2. 通过HashSet踢除重复元素 3. 删除ArrayList中重复元素,保持顺序 4.把list里的对象遍历一遍,用list.contain(),如果
阅读全文
摘要:JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作,整个看起来就像是优化过且线程安全的HashMap,虽然在JDK1.8中还能看到Segment的数据结构,但是已经简化了属性,只是为了兼容旧版本。
阅读全文
摘要:HashMap 属性 //默认的初始容量16,且实际容量是2的整数幂 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量(传入容量过大将被这个值替换) static final int MAXIMUM_CAPACITY = 1 <<
阅读全文
摘要:Redis写快照的时候,用到了Linux底层的Copy-On-Write技术,可能有些人没听过或者听过但是没有深入了解下这个技术,通俗易用地讲,写入时复制技术就是不同进程访问同一资源的时候,只有在写操作,才会去复制一份新的数据,否则都是访问同一个资源。 Copy-On-Write,写入时复制,这个技
阅读全文
摘要:https://www.iteye.com/blog/qindongliang-2430131
阅读全文
摘要:TreeMap 是 SortedMap 的子类,所以它具有排序功能。它是基于红黑树数据结构实现的,每一个键值对 <key, value> 都是一个结点,默认情况下按照key自然排序,另一种是可以通过传入定制的 Comparator 进行自定义规则排序。 TreeMap中的元素默认按照keys的自然排
阅读全文
摘要:LinkedHashMap是HashMap的子类,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。 它底层维护了一条双向链表,因为继承了 HashMap,所以它也不是线程安全的 LinkedHashMap 可实现LRU缓存淘汰策略,其原理是通过设置 access
阅读全文
摘要:JDK7中的实现 JDK1.5开始加入了ConcurrentHashMap 一个ConcurrentHashMap实例中包含由若干个Segment实例组成的数组,而一个Segment实例又包含由若干个桶,每个桶中都包含一条由若干个 HashEntry 对象链接起来的链表。特别地,Concurrent
阅读全文
摘要:Arrays在float/long/int/char等进行排序时,使用的算法是快速排序;而对于Object数组排序则是使用的是归并排序。 LegacyMergeSort.userRequested大致意思是“用户请求传统归并排序”的意思,通过System.setProperty("java.util
阅读全文
摘要:java.util.Collections,是不属于java的集合框架的,它是集合类的一个工具类/帮助类。此类不能被实例化, 服务于java的Collection框架。 https://www.jianshu.com/p/0494cce4312a https://www.cnblogs.com/Ea
阅读全文
摘要:List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap
阅读全文
摘要:Hashmap 和hashtable的区别 1 HashMap不是线程安全的 ,HashTable是线程安全的 ,由于非线程安全,效率上可能高于Hashtable。 Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程应用程序中,不用专门的操作就安全地可以使用
阅读全文
摘要:转自:https://baijiahao.baidu.com/s?id=1618550070727689060&wfr=spider&for=pc 1、为什么用HashMap? HashMap是一个散列桶(数组和链表), 它存储的内容是键值对(key-value)映射HashMap采用了数组和链表的
阅读全文