Java容器
文章平均质量分 76
Vighzhen
在校大学生
展开
-
容器源码分析 - 并发容器
容器源码分析 - 并发容器以下源码分析基于 JDK 1.8。CopyOnWriteArrayList1、读写分离写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分离,互不影响。写操作需要加锁,防止并发写入时导致写入数据丢失。写操作结束之后需要把原始数组指向新的复制数组。public boolean add(E e) { //加锁 final ReentrantLock lock = this.lock; lock.lock(); tr原创 2022-02-20 00:15:00 · 411 阅读 · 0 评论 -
容器源码分析 - Map
容器源码分析 - Map以下源码分析基于 JDK 1.8。HashMap为了便于理解,以下源码分析以 JDK 1.7 为主。1.存储结构内部包含了一个 Entry 类型的数组 table。transient Entry[] table;Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。 即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突, 同一个链表中存放哈希值相同的 Entry。原创 2022-02-20 00:15:00 · 330 阅读 · 0 评论 -
容器源码分析
容器源码分析 - List以下源码分析基于 JDK 1.8。ArrayList1. 概览实现了 RandomAccess 接口,因此支持随机访问。这是理所当然的,因为 ArrayList 是基于数组实现的。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableC原创 2022-02-20 00:15:00 · 314 阅读 · 0 评论 -
容器中的设计模式
容器中的设计模式迭代器模式Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。从JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。List<String> list = new ArrayList<>();list.add("a");list.add("b");for (.原创 2022-02-20 00:15:00 · 377 阅读 · 0 评论 -
Java容器概览
Java容器概览容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。CollectionCollection 集合体系图:1.Set TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。 但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。 HashSet:基于哈希表实现,支持快速查找,但不支原创 2022-02-20 00:15:00 · 101 阅读 · 0 评论