
集合
文章平均质量分 53
集合
赵鹏翔
上海市东华大学在读研究生,大家共勉。
展开
-
ConcurrentHashMap线程安全的具体实现方式/底层具体实现
ConcurrentHashMap线程安全的具体实现方式/底层具体实现JDK1.7首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据时,其他段的数据也能被其他线程访问。ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成。Segment 实现了 ReentrantLock,所以 Segment 是一种可重入锁,扮演锁的⻆色。HashEntry 用于存储键值对数据。一个 ConcurrentHashMap 里原创 2021-04-20 18:33:28 · 527 阅读 · 0 评论 -
ConcurrentHashMap 和 Hashtable 的区别
ConcurrentHashMap 和 Hashtable 的区别ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同。底层数据结构: JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,JDK1.8 采用的数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。Hashtable 和 JDK1.8 之前的 HashMap 的底层数据结构类似都是采用 数组+链表 的形式,数组是 HashMap 的主体,链表则是主原创 2021-04-20 17:11:47 · 138 阅读 · 0 评论 -
HashMap的底层实现
HashMap的底层实现HashMap 和 Hashtable 的区别HashMap 和 HashSet区别Hashtable和ConcurrentHashMap区别Hashtable和ConcurrentHashMap区别2JDK1.8之前JDK1.8 之前 HashMap 底层是数组和链表结合在一起使用,也就是链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n原创 2021-04-20 17:55:06 · 466 阅读 · 1 评论 -
HashMap 和 HashSet区别
HashMap 和 HashSet区别如果你看过 HashSet 源码的话就应该知道:HashSet 底层就是基于 HashMap 实现的。(HashSet 的源码非常非常少,因为除了 clone() 、 writeObject() 、 readObject() 是 HashSet 自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法。HashSet如何检查重复当你把对象加入 HashSet 时,HashSet会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他加入原创 2021-04-20 16:49:18 · 230 阅读 · 0 评论 -
HashMap 和 Hashtable 的区别
线程是否安全1.HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过 synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);效率2.因为线程安全的问题,HashMap 要比 HashTable 效率高一点;对Null key 和Null value的支持3 HashMap 中,null 可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为 null。但是在 HashTable 中原创 2021-04-20 16:18:25 · 188 阅读 · 0 评论 -
Arraylist 与 LinkedList 区别
是否保证线程安全ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全底层数据结构Arraylist 底层使用的是 Object 数组; LinkedList 底层使用的是双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别)插入和删除是否受元素位置的影响① ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行 add(E e) 方法的时候, ArrayList 会默认在将指定的原创 2021-04-20 15:10:05 · 645 阅读 · 1 评论 -
双向链表和双向循环链表
双向链表包含两个指针,一个prev指向前一个节点,一个next指向后一个节点。双向循环链表最后一个节点的 next 指向head,而 head 的prev指向最后一个节点,构成一个环。原创 2021-04-20 15:09:04 · 254 阅读 · 0 评论 -
List,Set,Map三者的区别
List(对付顺序的好帮手)List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象Set(注重独一无二的性质)不允许重复的集合。不会有多个元素引用相同的对象。Map(用Key来搜索的专家)使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。...原创 2021-04-20 14:51:50 · 123 阅读 · 0 评论 -
hashCode 与 equals
hashCode 与 equals面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写 equals 时必须重写 hashCode 方法?”hashCode()介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在 JDK 的 Object.java 中,这就意味着 Java 中的任何类都包含有 hashCode() 函数。散列表存储的是键值对(key-v原创 2021-04-19 21:43:49 · 501 阅读 · 0 评论 -
二叉树 红黑树 整理
二叉树1、有一个根节点2、每个节点至多有两个分支3、最下面的节点叫叶子节点红黑树(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的,也就是说不可能出现两个连续的红色节点,不过两个连续的黑色节点是可能出现的(5)从任意一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。1 二叉树是什么,有什么用?简答:将N个数据插入到一原创 2021-03-31 16:41:18 · 212 阅读 · 0 评论 -
java 集合整理
集合框架结构图ps:map和collection似乎没有produce的关系queueCollection:单值存储的集合Map:键值对的形式集合Iterator:迭代器(对所有的集合进行迭代的实现,用迭代器获取数据结构的数据对这个数据结构来说是最优的)CollectionCollection 接口是在整个 Java 类集中保存单值的最大操作父接口,里面每次操作的时候都只能保存一个对象的数据。 此接口定义在 java.util 包中。Collection的子接口:List、Set转载 2021-04-07 18:49:16 · 103 阅读 · 0 评论 -
Collections常用功能----Comparable接口和Comparator接口
一 Collections常用功能java.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。public static <T> void sort(List&原创 2021-04-14 10:48:16 · 579 阅读 · 1 评论