在 Java 中,我们经常会使用到一些处理缓存数据的集合类,这些集合类都有自己的特点,今天主要分享下 Java 集合中几种经常用的 Map、List、Set。 1、Map 一、背景 二、Map家族 三、HashMap、Hashtable等 四、HashMap 底层数据结构 2、List 一、List ...
分类:
编程语言 时间:
2020-04-19 18:17:20
阅读次数:
70
题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。 思路:第一个思路是创建一个锚点,这个锚点表示第一个正整数的出现的位置,然后再分情况来判断,结果程序无法通过所有的测试用例,第一个思路方法以后再实现,后来使用Hash ...
分类:
编程语言 时间:
2020-04-19 17:47:34
阅读次数:
307
在 Java 中,我们经常会使用到一些处理缓存数据的集合类,这些集合类都有自己的特点,今天主要分享下 Java 集合中几种经常用的 Map、List、Set。 1、Map 一、背景 二、Map家族 三、HashMap、Hashtable等 四、HashMap 底层数据结构 2、List 一、List ...
分类:
编程语言 时间:
2020-04-19 14:29:18
阅读次数:
66
ConcurrentHashMap是一个经常被使用的数据结构,它在线程安全的基础上提供了更好的写并发能力。ConcurrentHashMap跟Map有很大的不同,内部大量使用volatile和CAS等减少锁竞争,当然代码也比HashMap难理解的多,本章基于JDK1.8对ConcurrentHash... ...
分类:
其他好文 时间:
2020-04-19 00:43:45
阅读次数:
64
一、实验使用实体类 1.静态工厂配置Bean 静态工厂类 StaticFactory package com.llf.bean.factory; import com.llf.bean.Car; import java.util.HashMap; import java.util.Map; /** ...
分类:
编程语言 时间:
2020-04-18 18:41:01
阅读次数:
74
HashMap源码分析 简介 HashMap是一个底层用数组+链表实现的存储KV键值对数据结构,它允许null键和null值。 原理 HashMap的存储规则是,根据K的hashCode运算得到hash值,然后根据hash值运算得到下标,如果数组中该下标没有值就放入,有值就一个一个比较是否hash值 ...
分类:
其他好文 时间:
2020-04-17 00:11:06
阅读次数:
52
要点 ConcurrentHashMap是HashMap的线程安全版本; 不允许[key,value]为null; 比Hashtable锁粒度更细; 采用CAS和synchronized来保证并发安全。数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树; 负载因子0.75; 默认初始化 ...
分类:
编程语言 时间:
2020-04-16 19:40:58
阅读次数:
76
如何填满一个HashMap? step_1 : 计算所需内存 在64位JVM情况下,对象markword占8个字节,指向类的指针占8个字节。 HashMap的每一个节点结构如下: 综上所述,每一个 在默认8字节对齐后占48字节。 HashMap规定最多含有2G个 2G 48=96G 按照该数组的最大 ...
分类:
其他好文 时间:
2020-04-16 19:28:50
阅读次数:
53
Map集合介绍: 1.特点: 存储数据的结构:键值对; 键唯一:键不能重复; 一个键最多对应一个值,可以值为空; public class MapDemo { public static void main(String[] args) { HashMap<Integer,String> map = ...
分类:
其他好文 时间:
2020-04-15 18:31:52
阅读次数:
60
HashSet 先看一下成员变量 // 由此可见内部存储是一个HashMap private transient HashMap<E,Object> map; private static final Object PRESENT = new Object(); public HashSet() { ...
分类:
其他好文 时间:
2020-04-15 18:29:11
阅读次数:
67