集合框架
文章平均质量分 70
Java集合基础知识
学而不思则忘
一切都可以
展开
-
Java并发List
一. 并发场景下的List1. CopyOnWriteArrayListCopyOnWriteArrayList 是线程安全的 ArrayList。CopyOnWrite 意思为写的时候会将共享变量新复制一份出来。复制的好处在于读操作是无锁的(也就是无阻塞)。CopyOnWriteArrayList 仅适用于写操作非常少的场景,而且能够容忍读写的短暂不一致。如果读写比例均衡或者有大量写操作的话,使用 CopyOnWriteArrayList 的性能会非常糟糕。CopyOnWriteArrayList原创 2021-10-22 15:53:05 · 2076 阅读 · 0 评论 -
ArrayList线程不安全的原因
以下面代码为测试用例:public class ArrayListTest { private static final Logger LOGGER = LoggerFactory.getLogger(ArrayListTest.class); private static final ExecutorService threadPoolService = new ThreadPoolExecutor(100, 200, 5, TimeUnit.SECONDS,原创 2021-10-22 15:37:45 · 237 阅读 · 0 评论 -
Java并发Map之ConcurrentHashMap
1. ConcurrentHashMap特性ConcurrentHashMap 是线程安全的 HashMap ,用于替代 HashTablepublic interface ConcurrentMap<K, V> extends Map<K, V> {}public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>,原创 2021-03-15 22:26:42 · 546 阅读 · 0 评论 -
HashMap和HashTable区别
HashMap:HashMap是线程不安全的。在并发环境中,可能会出现环状链表。原因????HashTable:HashTable和HashMap实现的原理几乎一样。差别:HashTable不允许key和value为nullHashTable是线程安全的。但是其代价很大。get/put相关的操作都是synchronized的,多线程访问的时候,只要有一个线程访问或操作该对象,那其他线程只能阻塞,相当于将所有的线程串行化,这会导致性能非常差。HashTable性能差主要是由于所有操作需要竞争同一把原创 2021-03-12 21:11:16 · 84 阅读 · 0 评论 -
ConcurrentHashMap和CopyOnWriteArrayList
一、并发容器简介并发容器对应的普通容器描述ConcurrentHashMapHashMapJava 1.8 之前采用分段锁机制细化锁粒度,降低阻塞,从而提高并发性;Java 1.8 之后基于 CAS 实现。ConcurrentSkipListMapSortedMap基于跳表实现的CopyOnWriteArrayListArrayListCopyOnWriteArraySetSet基于 CopyOnWriteArrayList实现。Concurr原创 2021-03-12 21:10:00 · 657 阅读 · 0 评论 -
HashMap的实现原理
HashMap 要点从 HashMap 的命名,也可以看出:HashMap 以散列方式存储键值对。HashMap 允许使用空值和空键。(HashMap 类大致等同于 Hashtable,除了它是不同步的并且允许为空值。)这个类不保序;特别是,它的元素顺序可能会随着时间的推移变化。HashMap 有两个影响其性能的参数:初始容量和负载因子。 /** * The default initial capacity - MUST be a power of two. */原创 2021-03-12 21:06:40 · 153 阅读 · 0 评论 -
Java集合框架体系图
原创 2021-03-05 21:49:37 · 287 阅读 · 0 评论 -
Java容器之Queue
Java容器之Queue1. Queue 简介1.1. Queue 接口public interface Queue<E> extends Collection<E> {}1.2. AbstractQueue 抽象类AbstractQueue 类提供 Queue 接口的核心实现,以最大限度地减少实现 Queue 接口所需的工作。AbstractQueue 抽象类定义如下:public abstract class AbstractQueue<E>转载 2021-02-27 12:50:43 · 174 阅读 · 0 评论 -
Java容器之Map接口与实现类
Java容器之Map1. Map简介1.1 Map 架构Map 是 Map 容器家族的祖先,Map 是一个用于保存键值对(key-value)的接口。Map 中不能包含重复的键;每个键最多只能映射到一个值。AbstractMap 是实现了 Map 的抽象类,它实现了 Map 中的核心 API。其它 Map 的实现类可以通过继承 AbstractMap 来减少重复编码。SortedMap 继承了 Map 的接口。SortedMap 中的内容是排序的键值对,排序的方法是通过实现比较器(Co原创 2021-02-27 11:08:24 · 332 阅读 · 0 评论 -
Java容器之Set接口与实现类
Set接口与实现类Set接口public interface Set<E> extends Collection<E>特点:元素无序,不可重复常用方法:https://docs.oracle.com/javase/8/docs/api/实现接口的类有:HashSet, LinkedHashSet, TreeSetSet介绍Set 继承了 Collection 的接口。实际上 Set 就是 Collection,只是行为略有不同:Set 集合不允许有重原创 2021-02-26 15:55:55 · 350 阅读 · 0 评论 -
Java容器之List接口与实现类
一、List简介List是一个接口,继承于Collection的接口,代表着有序的队列。AbstractList是一个抽象类,继承于AbstractCollection.AbstractList 实现了 List 接口中除 size()、get(int location) 之外的函数。AbstractSequentialList 是一个抽象类,它继承于 AbstractList。AbstractSequentialList 实现了链表中,根据index索引值操作链表的全部函数。二、ArrayList原创 2020-11-20 19:55:31 · 284 阅读 · 0 评论