![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java集合
疏雨
这个作者很懒,什么都没留下…
展开
-
HashTable和HashMap的区别详解
一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap 实现了Serializable接口,因此它支...转载 2018-05-10 10:33:22 · 141 阅读 · 0 评论 -
JDK1.8 HashMap源码分析
一、HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。 下图中代表jdk...转载 2018-05-16 13:42:43 · 217 阅读 · 0 评论 -
LinkedHashMap
一、初识LinkedHashMap上篇文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的M...转载 2018-05-08 16:46:04 · 1435 阅读 · 0 评论 -
java集合框架综述
一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实...转载 2018-05-15 10:01:31 · 191 阅读 · 0 评论 -
深入理解HashMap
Hash哈希,译作散列,或哈希。就是把任意长度的输入,通过散列算法(hash算法),变换成固定长度的输出,这个输出的值就是哈希值。显然这是一个映射的过程。hashCode()再来看一看HashCode,这是一个方法,该方法返回一个特殊的值,在java中会返回一个整数,用来判断是否是两个相同的对象,和equals方法有紧密的联系:HashCode主要用于提供快捷的查找,在HashTable和Hash...转载 2018-05-15 09:32:07 · 189 阅读 · 0 评论 -
Java集合之HashSet
1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个private static fin...转载 2018-05-15 09:19:54 · 160 阅读 · 0 评论 -
初识HashMap
初识HashMap之前的List,讲了ArrayList、LinkedList,最后讲到了CopyOnWriteArrayList,就前两者而言,反映的是两种思想:(1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢(2)LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。HashMa...转载 2018-05-08 11:35:29 · 156 阅读 · 0 评论 -
LinkedList
初识LinkedList上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现。LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有其前一个存储单元...转载 2018-05-08 11:33:59 · 151 阅读 · 0 评论 -
ArrayList
前言这个分类中,将会写写Java中的集合。集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。这里写的集合,一部分是比较常见的、一部分是不常用但是我个人平时见到过的,一些比较相似的集合(比如HashMap和Hashtable)就只讲一个,突出它们之间的区别即可。最后,要指出一点,对于集合,我认为关注的点主要有四点:1、是否...转载 2018-05-08 11:16:14 · 376 阅读 · 0 评论 -
HashCode的作用
前言Object提供给我们了一个Native的方法“public native int hashCode();”,本文讲讲Hash是什么以及HashCode的作用Hash先用一张图看下什么是HashHash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值。关于散列值,有以下几个关键结论:1、如果散列表中存在和散列原始输入K相等的记录,那么K必定在f(K)的存储...转载 2018-05-08 09:54:08 · 165 阅读 · 0 评论 -
Java集合之HashMap
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。四个关注点在HashMap上的答案关注点结论HashMap是否允许空Key和Value都允许为...转载 2018-05-10 09:51:34 · 151 阅读 · 0 评论 -
ConcurrentHashMap原理分析
一、出现背景 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。2、效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTabl...转载 2018-05-17 10:40:47 · 1686 阅读 · 1 评论 -
Java中如何遍历Map对象的4种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。[java] view plain copyMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer>...转载 2018-05-16 13:44:35 · 423 阅读 · 0 评论