随笔分类 - Java集合与Map源码
摘要:if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k)))) 源码中为什么使用了equals判断相等后,同时需要判断hash码是否相同? 这里需要注意的是key可以使对象即Object类型的,也可以是Lon
阅读全文
摘要:ArrayBlockingQueue 基于同一个ReentrantLock锁实现线程安全,同时记录takeIndex与putIndex两个索引用于拿取和增加队列索引 使用集合实现的有界队列,一旦创建ArrayBlockingQueue对象,容量就固定了,对于排队等待的生产者或者消费者线程ArrayB
阅读全文
摘要:ArrayList 线程:不安全 实现方式:数组 初始大小:10 扩容:(原数组容量+原数组容量/2),如果(原数组容量+原数组容量/2)<传入的minCapacity,则扩容到minCapacity 数组最大值:Integer.MAX_VALUE - 8,由于有一些vms会在数组头存储一些字,为了
阅读全文
摘要:调用Arrays.copyOf()方法会在堆中重新分配内存创建数组 调用Arrays.copyOf()方法会在堆中重新分配内存创建数组 代码翻译: /传入原有数组对象,传入要截取的长度 public static <T> T[] copyOf(T[] original, int newLength)
阅读全文
摘要:实现List、RandomAccess、Cloneable List接口定义List集合的操作方法 RandomAccess实现此接口的类可以随机访问 Cloneable实现此接口的类可以进行拷贝操作 重要说明: CopyOnWriteArrayList是线程安全的, 通过CopyOnWriteAr
阅读全文
摘要:继承类:AbstractMap 实现接口:Map、Cloneable Map:将key-value映射为对象,接口取代了Dictionary类, AbstractMap实现了Map,减少实现Map接口时的工作量 Cloneable实现此接口的类可以进行拷贝操作 重要说明: 1、异或操作: x是二进制
阅读全文
摘要:继承AbstractSequentialList 实现了顺序访问列表 实现List、Deque、Cloneable List接口定义List集合的操作方法 Deque支持在两端插入和删除元素的线性集合。 Cloneable实现此接口的类可以进行拷贝操作 重要说明: 1、定了first头节点(firs
阅读全文
摘要:Vector与ArrayList类似,都是使用动态数组实现 Vector是线程安全的 重要说明: 1、实现AbstractList,即List的抽象类 2、使用数组存储数据 3、默认初始化大小为10 4、Vector中有capacityIncrement属性: capacityIncrement>0
阅读全文
摘要:继承AbstractList 实现List、RandomAccess、Cloneable、Serializable AbstractList抽闲类中定义继承AbstractList的SubList内部类 List接口定义List集合的操作方法 RandomAccess实现此接口的类可以随机访问 Cl
阅读全文