ArrayList.LinkedList.HashMap是Java开发中非常常见的数据类型.它们的区别也非常明显的,在Java中也非常具有代表性.在Java中,常见的数据结构是:数组.链表,其他数据结构基本就是这两者的组合. 复习一下数组.链表的特征. 数组:在内存中连续的地址块,查找按照下标来寻址,查找快速.但是插入元素和删除元素慢,需要移动元素. 链表:内存中逻辑上可以连接到一起的一组节点.每个节点除了存储本身,还存储了下一个元素的地址.查找元素需要依次找找各个元素,查找慢,插入和删除元素只…
                                                                         JDK源代码学习系列04----ArrayList 1.ArrayList简单介绍 ArrayList是基于Object[] 数组的,也就是我们常说的动态数组. 它能非常方便的实现数组的添加删除等操作. public class ArrayList<E> extends AbstractList<E> implements List<…
                                         JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向链表实现的,它也能够被当作堆栈.队列或双端队列进行操作. public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable,…
                                                               JDK源代码学习系列07----Stack 1.Stack源代码很easy package java.util; public class Stack<E> extends Vector<E> { // 版本号ID.这个用于版本号升级控制,这里不须理会! private static final long serialVersionUID = 1224463…
                     JDK源代码学习系列03----StringBuffer+StringBuilder 因为前面学习了StringBuffer和StringBuilder的父类AbstractStringBuilder,他们俩的非常多方法都是直接super了父类的,也为了较好的比較StringBuffer和StringBuilder,所以把二者放在同一博文中. 一.StringBuffer 1.静态类,不能被继承,实现了Serializable和CharSequence接…
一.概述 1.Java,是一套语言规范,例如规定了变量如何定义.控制语句如何写等,提供基本的语法规范.JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java基本的语法来写的,使用JDK能够更好的使用java.当然,自己也可以写一套JDK.自己在项目中也可以不使用自带的JDK,而使用原生的基本语法. 2.在整个JDK API中,大约包含1200个包,包名主要有三种:java.javax和org.其中以java开头的包名是JDK的基础语言包,以javax开…
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引  但是缺点就是查找非常麻烦 要丛第一个索引开始 Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. 也许最重要的不同是Hashtable…
1.HashMap 特点:基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.)无序存储.性能主要受制于初始容量和加载因子两个参数.当需要进行rehash时,扩展为原来的两倍. 2.TreeMap 特点:基于红黑树的NavigableMap实现,该映射根据其键的自然顺序(升序)排序,或者根据创建映射时的Comparator排序.可以存放null的val…
简单地画了下 LinkedList 的继承关系,如下图.只是画了关注的部分,并不是完整的关系图.本博文涉及的是 Queue, Deque, LinkedList 的源代码阅读笔记.关于 List 接口的笔记,可以参考上一篇博文 List / ArrayList - 源代码学习笔记 Queue 1. 继承 Collection 接口,并提供了额外的插入.提取和查看元素的方法.新增的方法都有两种形式:当操作失败时,抛出异常或者返回一个特殊值.特殊值可以是 null 或者 false ,这取决于方法本…
调试JDK源代码-一步一步看HashMap怎么Hash和扩容 调试JDK源代码-ConcurrentHashMap实现原理 调试JDK源代码-HashSet实现原理 调试JDK源代码-调试JDK源代码-Hashtable实现原理以及线程安全的原因 还是调试源代码最好. 开发环境  JDK1.8+NetBeans8.1 说明:调试HashMap的 public V put(K key, V value) 方法并查看key的值时不能显示变量的值,原因在于oracle提供的jre中rt.jar不带de…