Java - 集合
# Java - 集合
yamaxifeng_132
努力、奋斗
展开
-
ConcurrentHashMap(JDK1.8)为什么要放弃Segment
今天看到一篇博客:jdk1.8的HashMap和ConcurrentHashMap,我想起了前段时间面试的一个问题:ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是可重入锁?我想从下面几个角度讨论这个问题:1. 锁的粒度首先锁的粒度并没有变粗,甚至变得更细了。每当扩容一次,ConcurrentHashMap的并发度就扩大一倍。2. Hash冲突...转载 2019-04-23 09:51:29 · 1900 阅读 · 0 评论 -
java之集合类详解
面试常见问题ArrayList和LinkedList的联系和区别1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据...原创 2016-11-30 20:30:48 · 554 阅读 · 0 评论 -
HashMap之扩容机制
首先要了解HashMap的扩容过程,我们就得了解一些HashMap中的变量:Node<K,V>:链表节点,包含了key、value、hash、next指针四个元素table:Node<K,V>类型的数组,里面的元素是链表,用于存放HashMap元素的实体size:记录了放入HashMap的元素个数loadFactor:负载因子threshold:扩容的阈值,决定了Ha...转载 2019-01-09 16:20:21 · 608 阅读 · 0 评论 -
ArrayList 概述
1.ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。2.ArrayList不是线程安全的,只能用在单线程环境下。3.实现了Serializable接口,因此它支持序列化,能够通过序列化传输;4.实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;5.实现了Cloneable接口,能被克隆。动态扩容一 初始化首先有三种方...转载 2019-01-29 09:37:53 · 289 阅读 · 0 评论 -
Java HashSet工作原理
原文地址:HashSet in JavaHashSet:实现了Set接口 HashSet依赖的数据结构是哈希表 因为实现的是Set接口,所以不允许有重复的值 插入到HashSet中的对象不保证与插入的顺序保持一致。对象的插入是根据它的hashcode HashSet中允许有NULL值 HashSet也实现了Searlizable和Cloneable两个接口HashSet的构造函...转载 2019-01-29 09:34:08 · 463 阅读 · 0 评论 -
ConcurrentHashMap与红黑树实现分析Java8
本文学习知识点1、二叉查找树,以及二叉树查找带来的问题。2、平衡二叉树及好处。3、红黑树的定义及构造。4、ConcurrentHashMap中红黑树的构造。在正式分析红黑树之前,有必要了解红黑树的发展过程,请读者耐心阅读。二叉查找树红黑树的起源得从二叉查找树(二叉排序树)说起。先来看二叉查找树的定义:1、要么为一颗空树,要么就是一颗具有如下特性的二叉树。2、左子节...转载 2019-04-26 13:31:40 · 716 阅读 · 0 评论