java集合类学习笔记之LinkedHashMap】的更多相关文章

1.简述 LinkedHashMap是HashMap的子类,他们最大的不同是,HashMap内部维护的是一个单向的链表数组,而LinkedHashMap内部维护的是一个双向的链表数组.HashMap是无序的,LinkedHashMap可以根据访问顺序或者插入顺序进行排序(默认是根据插入顺序的,当设置accessOrder为true时会按照访问顺序排序),当按照访问顺序排序的时候,每次get或put操作时,都会将该节点放到链表的末尾 2.实现 1.数据结构: LinkedHashMap是HashM…
1.简述 HashMap是java语言中非常典型的数据结构,也是我们平常用的最多的的集合类之一.它的底层是通过一个单向链表(Node<k,v>)数组(也称之为桶bucket,数组的长度也叫做桶深)来实现的.它内部有以下成员变量  static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 内部数组的默认初始长度 static final int MAXIMUM_CAPACITY = 1 << 30;   内…
1.简述 ArrayList底层的实现是使用了数组保存所有的数据,所有的操作本质上是对数组的操作,每一个ArrayList实例都有一个默认的容量(数组的大小,默认是10),随着 对ArrayList不断增加元素,默认的数组会不断的向新数组进行拷贝,由于ArrayList的内部是通过对数组的操作实现的,所以它是线程不安全的 2.实现 a.构造方法: AyyarList一共提供了三种构造方法: /** * Constructs an empty list with the specified ini…
二,具体的集合 集合类型 描述 ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列 ArrayDeque 一种用循环数组实现的双端队列 HashSet 一种没有重复元素的无序集合 TreeSet 一种有序集 EnumSet 一种包含枚举类型值的集 LinkedHashSet 一种可以记住元素插入次序的集合 PriorityQueue 一种允许高效删除最小元素的集合 HashMap 一种存储键/值关联的数据结构 Tree…
一.集合的接口 java集合类库也将接口与实现相分离.首先看一下大家都熟悉的数据结构-队列是如何分离的.队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数.当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列. 队列通常有两种实现方式:循环数组 和 链表.循环数组查询数据的效率比链表高,但是增加和删除元素的速度没链表快.并且循环数组是一个有界集合,即容量有限,如果程序中要收集的对象数量没有上限,就最好使用链表来实现. 在Java类库中,集合类的基…
HashMap和Hashtable的实现机制几乎一样,但由于Hashtable是一个古老的.线程安全的集合,因此HashMap通常比Hashtable要快. TreeMap比HashMap和Hashtable要慢(尤其在插入.删除key-value对时更慢),TreeMap中的key-value总是处于有序状态,无需专门进行排序操作. LinkedHashMap比HashMap慢一点,因为它需要维护链表来保持Map中key-value时的添加顺序. IdentityHashMap采用与HashM…
Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是Map接口的典型实现类,他们的关系类似于ArrayList和Vector的关系. HashMap和Hashtable的区别: Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现. Hashtable不允许使用null作为key和value,HashMap可以使用. Li…
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入. HashSet类的特点: 不能保证元素的排列顺序,顺序可能与添加顺序不同,也有可能发生变化. HashSet不是同步的,如果多个线程同时访问并修改一个HashSet时,必须保证其同步. 元素值可以是null. LinkedHashSet类的特点: 是HashSet类的子类,它根据元素的hashCode值来决定元素的存储位置,但同时使用链表维护元素的次…
ArrayList.LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表. Queue代表了队列,Deque代表了双端队列. 一般来说,由于数组以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好: 而内部以链表作为底层实现的集合在执行插入.删除操作时有较好的性能. 总体来说,ArrayList的性能比LinkedList性能要好,因此大部分时候都应该考虑ArrayList. 关于使用List集合有如下建议: 如果需要遍历List集合元素,对于ArrayLi…
Queue集合用于模拟队列(先进先出:FIFO)这种数据类型. Queue有一个Deque接口,代表一个"双端队列",双端队列可以同时从两端来添加.删除元素,因此Deque的实现类既可以当成队列使用,也可以当成栈使用. PriorityQueue是一个标准的队列实现类(不是绝对标准的队列实现),保存队列元素的顺序并不是按加入队列的顺序,而是按队列元素的大小进行重新排序. ArrayDeque是一个基于数组实现的双端队列,创建Deque时同样可以指定一个numElements参数.当程序…