![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java集合类
文章平均质量分 55
wanger61
这个作者很懒,什么都没留下…
展开
-
Java集合类面试题总结
Java集合类面试题1、集合总结CollectionSetTreeSet:基于红黑树实现,支持有序性操作,例如:根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历...原创 2019-09-23 19:43:54 · 1145 阅读 · 0 评论 -
Java集合类(三)——Iterator,Iterable,RandomAccess
1.Iterator使用JDK提供的迭代接口进行Java集合的迭代:Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //do something }迭代器是一个标准化遍历各类容器里面的所有对象的方法类,它采用很典型的设计模式——迭代器模式。通过迭代器模式可以把访问逻辑从不同类原创 2020-09-20 12:42:25 · 160 阅读 · 0 评论 -
Java集合类(四)——fail-fast(快速失败)机制
引入在前面介绍ArrayList的扩容问题时对于modCount的操作没有详细说明,该变量的操作在add,remove等操作中都会发生改变。那么该变量到底有什么作用呢?简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentModif...转载 2019-11-20 15:52:11 · 192 阅读 · 0 评论 -
Java集合类(一)——ArrayList、Vector、Stack
List集合源码分析1.ArrayList ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。默认初始容量为10。随着ArrayList中元素的增加,它的容量也会不断的自动增长。...转载 2019-09-23 18:11:21 · 100 阅读 · 1 评论 -
Java集合类(二)——LinkedList、Queue、PriorityQueue
List集合源码分析1.LinkedListLinkedList实现List接口,底层结构是双向链表,允许所有的元素包括null除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其...原创 2019-09-23 19:08:16 · 200 阅读 · 0 评论 -
Java集合类(五)——HashMap、HashTable
HashMap、HashTable1. HashMap底层结构:数组+链表+红黑树维护变量transient Node<K,V>[] table; //哈希表transient Set<Map.Entry<K,V>> entrySet; //保存结点的集合transient int size; //元素个数transient int m...原创 2019-09-23 21:28:36 · 109 阅读 · 0 评论 -
Java集合类(六)——LinkedHashMap、LRU
LinkedHashMap、LRU概述LinkedHashMap继承于HashMap,在HashMap的基础上,新增了两个特性:支持以节点的插入顺序来迭代该map内的所有节点;支持缓存设计中LRU的特性,即LinkedHashMap支持按访问顺序来排序节点,具体在内部实现为如果开启了这个特性,则每次通过get方法访问了一个节点,则该节点会被移动到内部的双向链表的末尾,故双向链表的头...转载 2019-09-24 19:00:59 · 268 阅读 · 0 评论 -
Java集合类(八)——TreeMap
TreeMap底层结构:红黑树红黑树的插入、删除太复杂了,就不写了原创 2019-09-24 19:05:05 · 114 阅读 · 0 评论 -
Java集合类(七)——HashSet、TreeSet、LinkedHashSet
HashSet、TreeSet、LinkedHashSetSetset接口是一种不包括重复元素的Collection,它维持它自己的内部排序,所以随机访问没有任何意义。1.HashSetprivate transient HashMap<E,Object> map;//用作value值private static final Object PRESENT = new Obj...原创 2019-09-24 19:26:22 · 119 阅读 · 0 评论 -
PriorityQueue实践和Topk问题
PriorityQueue的实践PriorityQueue内部维护着一个堆,如果不传入比较器,则按自然排序,实际上维护着一个小顶堆。传入比较器后,把比较后小的值放在堆顶。接下来我们看这样一个问题:如何得到一个数组最小的k个数。解决该问题有两个思路:利用Partition函数,得到数组中第n小的下标n,如果n=k-1,则前n个数则为最小的k个数;如果n<k-1,则对后面的数继续进行Pa...原创 2019-10-22 21:21:15 · 273 阅读 · 0 评论