JDK源码学习笔记——ArrayList/Vector】的更多相关文章

一.类定义 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable 二.属性 // 序列化id private static final long serialVersionUID = 8683452581122892189L; // 默认初始的容量 private static final in…
HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序. LinkedHashMap保证了元素迭代的顺序.该迭代顺序可以是插入顺序或者是访问顺序.通过维护一个双向链表实现. 需要在理解HashMap实现原理的基础上学习LinkedHashMap,JDK源码学习笔记——HashMap 一.数据结构 实际上就是在HashMap的基础上加了LinkedList (图片来自Java集合之LinkedHashMap) LinkedHashMap.Entry继承了H…
1.学习jdk源码,从以下几个方面入手: 类定义(继承,实现接口等) 全局变量 方法 内部类 2.hashCode private int hash; public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h;…
一.类定义 public final class Integer extends Number implements Comparable<Integer> 二.属性 private final int value;// fianl private static final long serialVersionUID = 1360826667806852920L; // 值为 (-(2的31次方)) 的常量,它表示 int 类型能够表示的最小值. public static final int…
一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可以实现的功能,为什么要使用枚举? public class Season { public static final int SPRING = 1; public static final int SUMMER = 2; public static final int AUTUMN = 3; pub…
一.源码解析 public class Object { /** * 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用 */ private static native void registerNatives(); /** * 对象初始化时自动调用此方法 */ static { registerNatives(); } /** * 返回此Object的运行时类 */ public final native Class<?> getClass(); /** * hashC…
一.ArrayList概述 首先我们来说一下ArrayList是什么?它解决了什么问题?ArrayList其实是一个数组,但是有区别于一般的数组,它是一个可以动态改变大小的动态数组.ArrayList的关键特性也是这个动态的特性了,ArrayList的设计初衷就是为了解决Java数组长度不可变的问题.我们都知道在Java中数组一旦被创建出来,那么这个数组的大小就不可以改变了,而且初始化的时候就必须要指定数组的大小.在开发的场景中很多时候我们并不知道我们的数据量有多少,如果数组创建得太大就会造成极…
Java集合的学习先理清数据结构: 一.属性 //哈希桶,存放链表. 长度是2的N次方,或者初始化时为0. transient Node<K,V>[] table; //最大容量 2的30次方 static final int MAXIMUM_CAPACITY = 1 << 30; //默认的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; //加载因子,用于计算哈希表元素数量的阈值. threshold = 哈希桶.leng…
你一定听说过HashSet就是通过HashMap实现的 相信我,翻一翻HashSet的源码,秒懂!! 其实很多东西,只是没有静下心来看,只要去看,说不定一下子就明白了…… HashSet 两个属性: private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Obje…
找了几个分析比较到位的,不再重复写了…… Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例 [Java集合源码剖析]TreeMap源码剖析 java源码分析之TreeMap基础篇 关于红黑树: Java数据结构和算法(十一)——红黑树 [数据结构与算法]二叉排序树C实现(含完整源码) 红黑树(一)之 原理和算法详细介绍 (注意:此博客中图是错的)…