java Map
文章平均质量分 66
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
关于HashMap容量的初始化,还有这么多学问
转载自 关于HashMap容量的初始化,还有这么多学问在《HashMap中傻傻分不清楚的那些概念》文章中,我们介绍了HashMap中和容量相关的几个概念,简单介绍了一下HashMap的扩容机制。文中我们提到,默认情况下HashMap的容量是16,但是,如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量。(3->4、7->8、9->16)...转载 2018-06-03 07:47:28 · 27771 阅读 · 9 评论 -
Java Map集合面试题汇总
转载自 Java Map集合面试题汇总1、 你都知道哪些常用的Map集合?2、Collection集合接口和Map接口有什么关系?3、HashMap是线程安全的吗?线程安全的Map都有哪些?性能最好的是哪个?4、使用HashMap有什么性能问题吗?5、HashMap的数据结构是怎样的?默认大小是多少?内部是怎么扩容的?6、怎么按添加顺序存储元素?怎么按A-Z自然顺序存储元素?怎么自定义排序?7、H...转载 2018-04-20 21:00:32 · 1790 阅读 · 3 评论 -
漫画:什么是ConcurrentHashMap
转载自 玻璃猫 程序员小灰————————————————————————前两期我们讲解了HashMap的基本原理,以及高并发场景下存在的问题。没看过的小伙伴可以点击下面链接:漫画:什么是HashMap?漫画:高并发下的HashMap如果实在懒得看也没有关系,我们来简单回顾一下HashMap的结构:简单来说,HashMap是一个Entry对象的数组。数组中的每一个Entry元素,又是一个链表的头节...转载 2018-04-12 18:53:47 · 209 阅读 · 0 评论 -
漫画:高并发下的HashMap
转载自 玻璃猫 程序员小灰上一期我们介绍了HashMap的基本原理,这一期我们来讲解高并发环境下,HashMap可能出现的致命问题。HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候,HashMap需要扩展它的长度,也就是进行Resize。影响发生Resize的因素有两个:1.CapacityHashMap的当前长度...转载 2018-04-12 18:46:51 · 369 阅读 · 0 评论 -
漫画:什么是HashMap
转载自 玻璃猫 程序员小灰————————————众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。对于HashMap,我们最常使用的是两个方法:Get 和 Put。1.Put方法的原理调用Put方法的时候发生了什么...转载 2018-04-12 18:41:58 · 339 阅读 · 0 评论 -
HashMap jdk1.7源码阅读与解析
转载自HashMap源码阅读与解析一、导入语HashMap是我们最常见也是最长使用的数据结构之一,它的功能强大、用处广泛。而且也是面试常见的考查知识点。常见问题可能有HashMap存储结构是什么样的?HashMap如何放入键值对、如何获取键值对应的值以及如何删除一个键值对。今天我们就来看看HashMap底层的实现原理。下面我们就开始进入正题,分析一下hashmap源码的实现原理。...转载 2018-07-20 09:28:44 · 188 阅读 · 0 评论 -
HashMap在java并发中如何发生死循环
转载自 HashMap在java并发中如何发生死循环 在多线程环境中,使用HashMap进行put操作时会引起死循环,导致CPU使用接近100%,下面通过代码分析一下为什么会发生死循环。 首先先分析一下HashMap的数据结构:HashMap底层数据结构是有一个链表数据构成的,HashMap中定义了一个静态内部类作为链表,代码如下(与本文无关的代码省略):静态内...转载 2018-07-19 13:03:57 · 869 阅读 · 0 评论 -
如何线程安全的使用HashMap
转载自 如何线程安全的使用HashMap 在周二面试时,一面的面试官有问到 HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是 HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable 线程安全,但效率低,因为...转载 2018-07-19 12:59:55 · 424 阅读 · 0 评论 -
聊聊并发(四)深入分析ConcurrentHashMap
转载自 聊聊并发(四)深入分析ConcurrentHashMap术语定义术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象...转载 2018-07-18 22:05:25 · 169 阅读 · 0 评论 -
Java并发包:ConcurrentMap
转载自 Java并发包:ConcurrentMap 文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。 之前漏了一篇文章,这篇应该是在双端队列之后的,这里补上。ConcurrentMapjava.util.co...转载 2018-07-18 22:05:00 · 931 阅读 · 0 评论 -
ConcurrentHashMap能完全替代HashTable吗?
转载自 ConcurrentHashMap能完全替代HashTable吗?关于ConcurrentHashMap在之前的ConcurrentHashMap原理分析中已经解释了原理,而HashTable其实大抵上只是对HashMap的线程安全的封装,在JDK7与JDK8中HashMap的实现中解释了HashMap的原理。至此你应该能够明白,ConcurrentHashMap与HashTable都可...转载 2018-06-09 09:21:36 · 2079 阅读 · 0 评论 -
ConcurrentHashMap总结
转载自 ConcurrentHashMap总结并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计...转载 2018-06-09 09:21:18 · 144 阅读 · 0 评论 -
深入并发包-ConcurrentHashMap
转载自 深入并发包-ConcurrentHashMap前言以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在ge...转载 2018-06-09 09:19:58 · 443 阅读 · 2 评论 -
【集合框架】JDK1.8源码分析之HashMap(一)
转载自 【集合框架】JDK1.8源码分析之HashMap(一)一、前言 在分析jdk1.8后的HashMap源码时,发现网上好多分析都是基于之前的jdk,而Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。好~下面就开始分析源码。二、Has...转载 2018-06-09 09:12:53 · 185 阅读 · 0 评论 -
面试必问-几种线程安全的Map解析
转载自 面试必问-几种线程安全的Map解析HashMap线程安全的吗?Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的。看下面两个场景:1、当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不安全的问题了。2、当用在单例对象成员变量的时候呢?这时候多个线程过来访问的就是同一个HashMap了,对同个HashMap操作这时候就...转载 2018-05-02 13:03:24 · 38202 阅读 · 0 评论 -
ConcurrentHashMap总结
转载自 ConcurrentHashMap总结并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与...转载 2018-05-07 11:07:47 · 2264 阅读 · 1 评论 -
Java HashMap 遍历方式性能探讨
转载自 Java HashMap 遍历方式性能探讨关于HashMap的实现这里就不展开了,具体可以参考JDK7与JDK8中HashMap的实现JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来进行遍历。原因:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而ent...转载 2018-05-07 11:07:52 · 529 阅读 · 0 评论 -
HashMap中傻傻分不清楚的那些概念
转载自 HashMap中傻傻分不清楚的那些概念很多人在通过阅读源码的方式学习Java,这是个很好的方式。而JDK的源码自然是首选。在JDK的众多类中,我觉得HashMap及其相关的类是设计的比较好的。很多人读过HashMap的代码,不知道你们有没有和我一样,觉得HashMap中关于容量相关的参数定义的太多了,傻傻分不清楚。其实,这篇文章介绍的内容比较简单,只要认真的看看HashMap的原理还是可以...转载 2018-05-26 08:38:20 · 197 阅读 · 0 评论 -
全网把Map中的hash()分析的最透彻的文章,别无二家。
转载自 全网把Map中的hash()分析的最透彻的文章,别无二家。你知道HashMap中hash方法的具体实现吗?你知道HashTable、ConcurrentHashMap中hash方法的实现以及原因吗?你知道为什么要这么实现吗?你知道为什么JDK 7和JDK 8中hash方法实现的不同以及区别吗?如果你不能很好的回答这些问题,那么你需要好好看看这篇文章。文中涉及到大量代码和计算机底层原理知识。...转载 2018-05-18 10:38:30 · 1039 阅读 · 0 评论 -
ConcurrentHashMap的红黑树实现分析
转载自 ConcurrentHashMap的红黑树实现分析红黑树红黑树是一种特殊的二叉树,主要用它存储有序的数据,提供高效的数据检索,时间复杂度为O(lgn),每个节点都有一个标识位表示颜色,红色或黑色,有如下5种特性:1、每个节点要么红色,要么是黑色;2、根节点一定是黑色的;3、每个空叶子节点必须是黑色的;4、如果一个节点是红色的,那么它的子节点必须是黑色的;5、从一个节点到该节点的子孙节点的所...转载 2018-05-08 10:34:11 · 335 阅读 · 0 评论 -
Java HashSet和HashMap源码剖析
转载自 Java HashSet和HashMap源码剖析总体介绍之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。HashMap实现了Map接口,允许放入null元素,除该类未实现同步外,其余跟Hashtable大致相同,跟TreeM...转载 2018-05-08 10:34:03 · 174 阅读 · 0 评论 -
图解HashMap和HashSet的内部工作机制
转载自 图解HashMap和HashSet的内部工作机制HashMap 和 HashSet 内部是如何工作的?散列函数(hashing function)是什么?HashMap 不仅是一个常用的数据结构,在面试中也是热门话题。Q1. HashMap 如何存储数据?A1. 以键/值对(key/value)形式存储。你可以使用键(key)来存、取值。Q2. HashMap 查询时间的复杂度是怎样的?A...转载 2018-05-08 10:31:50 · 734 阅读 · 0 评论 -
如何线程安全的使用HashMap
转载自 如何线程安全的使用HashMap在周二面试时,一面的面试官有问到HashMap是否是线程安全的,如何在线程安全的前提下使用HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap和synchronized Map的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable线程安全,但效率低,因为是Hashtable是使用s...转载 2018-05-08 10:30:54 · 169 阅读 · 0 评论 -
Java 8 HashMap键与Comparable接口
转载自 Java 8 HashMap键与Comparable接口 这篇文章主要介绍了 Java 8 在 HashMap 哈希冲突处理方面的新特性。相对之前的版本,Java 8 在许多方面有了提升。其中有很多类被更新了,HashMap 作为最常使用的集合类之一也不例外。这篇文章将介绍 Java 8 中的 HashMap 在处理哈希冲突时的新特性。让我们从头开始。最容易使 HashMa...转载 2018-05-08 10:30:15 · 1022 阅读 · 0 评论 -
HashMap 实现原理
转载自 HashMap 实现原理HashMap是常考点,而一般不问List的几个实现类(偏简单)。以下基于JDK1.8.0_102分析。内部存储HashMap的内部存储是一个数组(bucket),数组的元素Node实现了是Map.Entry接口(hash, key, value, next),next非空时指向定位相同的另一个Entry,如图:容量(capacity)和负载因子(loadFacto...转载 2018-05-08 10:29:45 · 202 阅读 · 0 评论 -
Java8系列之重新认识HashMap
转载自 Java8系列之重新认识HashMap简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示:下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快...转载 2018-05-08 10:28:51 · 157 阅读 · 0 评论 -
HashMap的实现与优化
转载自 HashMap的实现与优化HashMap的优化与实践本文是基于作者在github上的Android 问题交流讨论坛提问而产生的一篇文章,也是自己早打算开坑的一篇文章。文章首先介绍了hashMap的一些基本知识,然后介绍了它在JDK8下的实现原理,最后着重介绍了几个面试中处理大数据的方法,文章比较长,我也写了好久,希望各位能够读完并发表意见。Android 题交流讨论坛是开源达人 Trine...转载 2018-05-08 10:27:00 · 322 阅读 · 0 评论 -
谈谈HashMap线程不安全的体现
转载自 谈谈HashMap线程不安全的体现HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了。那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢?1. resize死循环我们都知道HashMap初始容量大小为16,一般来说,当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大Hash表的尺寸,但...转载 2018-05-08 10:26:28 · 665 阅读 · 0 评论 -
HashMap 和 HashTable 到底哪不同 ?
转载自 HashMap 和 HashTable 到底哪不同 ?代码版本JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里1. 时间HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。从时间的维度上来看,HashMap要比HashTable出现得晚一些。2. 作者以下是HashTable的作者:12345以下代码及注...转载 2018-05-08 10:24:06 · 187 阅读 · 0 评论 -
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
转载自 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一...转载 2018-05-07 11:07:56 · 225 阅读 · 0 评论 -
彻底理解HashMap的元素插入原理
转载自 彻底理解HashMap的元素插入原理HashMap,是Java语言中比较基础也比较重要的一种数据结构,由于其用途广泛,所以,Java的工程师在设计HashMap的时候考虑了很多因素。通过阅读HashMap的源码,可以学习到很多知识,本文就是一篇基于HashMap源码的深度分析。全文文字+代码大概有1.5W左右,阅读时间大概半小时。如果你没有完整的半个小时时间,请先收藏,欢迎...转载 2018-10-05 13:04:53 · 3839 阅读 · 0 评论