jdk 1.8 处理 map和list】的更多相关文章

jdk 集合大家族之Map 前言: 之前章节复习了Collection接口相关,此次我们来一起回顾一下Map相关 .本文基于jdk1.8. 1. HashMap 1.1 概述 HashMap相对于List的数据结构而言,它是键值对的集合.主要通过提供key值来取相对应的value的值.而不是通过遍历来查找所需要的值. key值允许一个为null value不限制 key通常使用String Integer这种不可变类作为key 通过数组加链表加红黑树来实现,如下图所示 1.2 源码分析 成员变量…
Map 接口 Map 是一个接口,它表示一种“键-值(key-value)”映射的对象(Entry),其中键是不重复的(值可以重复),且最多映射到一个值(可以理解为“映射”或者“字典”). Map 常用的实现类有 HashMap.TreeMap.ConcurrentHashMap.LinkedHashMap 等,它们的继承结构如下: Map 的方法列表如下: 一些常用方法: // 将键-值对存入 Map,若 key 对应的 value 已存在,则将其替换 // 返回原先 key 对应的 valu…
Map 中ConcurrentHashMap是线程安全的,但不是所有操作都是,例如get()之后再put()就不是了,这时使用merge()确保没有更新会丢失. 因为Map.merge()意味着我们可以原子地执行插入或更新操作,它是线程安全的. 一.源码解析 default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) { Objects.requireNonNu…
(一)集合框架: Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(实现接口的类).所有抽象出来的数据结构和操作(算法)统称为集合框架. 程序员在具体应用的时候,不必考虑数据结构和算法实现细节,只需要用这些类创建一些对象,然后直接应用就可以了,这样就大大提高了编程效率. (二)集合框架包含的内容: (三)集合框架的接口(规范)   Collection接口:存储一组不唯一,无序的对象 List接口:存储一组不唯一,有序的对象 Set接口:存储一组唯一,无序的对象 Map接口:…
我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容. 首先看一下JSONObject和JSONArray 的结构: final class JSONObject extends AbstractJSON implements JSON, Map, Comparable final class JSONArray extends AbstractJS…
前面介绍了List和Queue相关源码,这篇开始,我们先来学习一种java集合中的除Collection外的另一个分支------Map,这一分支的类图结构如下: 这里为什么不先介绍Set相关:因为很多Set实现类是通过对应的Map来实现,使用Map中key不能重复的特性,往Set中add元素的本质就是Map的put(),这里先介绍Map,后续介绍Set的时候再做具体介绍 首先,我们来看Map接口: /** Map将key映射到value(存储键值对); 一个map不能存在重复的key; 一个k…
前言 JDK 15发布啦~ 我们一起回顾JDK 5-15 的新特性吧,大家一起学习哈~ 本文已经收录到github ❝ https://github.com/whx123/JavaHome ❞ 「公众号:捡田螺的小男孩」 Java 5 新特性 1. 泛型 泛型本质是参数化类型,解决不确定具体对象类型的问题.  List<String> strList=new ArrayList<String>(); 2. 增强循环(for-each) for-each循环简化了集合的遍历. Str…
我们知道Java语言中没有指针,取而代之的是引用reference.Java中的引用又可以分为四种:强引用,弱引用(WeakReference),软引用(SoftReference),虚引用(PhantomReference).其中强引用,就是我们平时使用的最多的最普通的引用,虚引用一般我们是没有机会使用到的.所以我们主要了解下 WeakReference 和 SoftReference(除了上面说的四种引用之外,其实还有一种引用——原子引用AtomicReference,用于并发编程环境).…
什么是mmap mmap对于c程序员很熟悉,对于java程序员有点陌生.简而言之,将文件直接映射到用户态的内存地址,这样对文件的操作不再是write/read,而是直接对内存地址的操作. 在c中提供了三个函数来实现 [list] mmap 进行映射 munmap 取消映射 msync 进程在映射空间的对共享内容的改变并不直接写回到磁盘文件中,往往在调用munmap()后才执行该操作. 具体参照http://blog.chinaunix.net/uid-24517893-id-164217.htm…
static(修饰变量方,法:静态块:静态内部类:静态导包) final transient 作用foreach 原理 volatile底层原理实现 集合LIST MAP SET 实现类的底层原理优,缺点 ArrayList LinkedList HashTable HashMap CocurrentHashMap  HashSet1)CocurrentHashMap锁分段技术1)CocurrentHashMap读是否要加锁为什么1)CocurrentHashMap的迭代器是强一致性的迭代器还是…