Arrays.sort()源码分析
摘要:static void sort(Object[] a, int lo, int hi, Object[] work, int workBase, int workLen) { assert a != null && lo >= 0 && lo int countRunAndMakeAscending(T[] a, int lo, int hi, ...
阅读全文
posted @
2018-12-31 17:49
溪水静幽
阅读(369)
推荐(0) 编辑
TreeSet
摘要:TreeSet简介 TreeSet 是一个有序没有重复元素的集合,作用是提供有序的Set集合。继承于AbstractSet抽象类,实现NavigableSet<E>, Cloneable, java.io.Serializable接口。TreeSet 继承于AbstractSet,是一个Set集合,
阅读全文
posted @
2018-10-15 16:11
溪水静幽
阅读(568)
推荐(0) 编辑
HashMap HashSet HashTable区别
摘要:(1)HashSet是set接口的一个实现类,hashMap是Map接口的一个实现类 (2)HashSet以对象作为存储元素,而HashMap以(key-value)的键值对对象作为存储元素 (3)HashSet不允许重复的元素(不允许包含重复的值),HashMap不允许重复的键,但是允许包含重复的
阅读全文
posted @
2018-10-14 12:16
溪水静幽
阅读(336)
推荐(0) 编辑
HashMap闭合环路
摘要:很有可能就是在两个线程在这个时候同时触发了rehash操作,产生了闭合的回路。下面我们从源码中一步一步地分析这种回路是如何产生的。先看一下put操作: addEntry操作: 可以看到,如果现在size已经超过了threshold,那么就要进行resize操作: 看一下transfer操作,闭合的回
阅读全文
posted @
2018-10-10 11:20
溪水静幽
阅读(336)
推荐(0) 编辑
WeakHashMap
摘要:WeakHashMap,从名字可以看出它是某种 Map。它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法。 更直观的说,当使用 WeakHashMap 时,即使没有显示的添加或删除任何元素,也可能发生如下情况: 调
阅读全文
posted @
2018-09-28 17:46
溪水静幽
阅读(171)
推荐(0) 编辑
Map接口综述
摘要:Map架构 (01) Map 是映射接口,Map中存储的内容是键值对(key-value)。(02) AbstractMap 是继承于Map的抽象类,实现了Map中的大部分API。其它Map的实现类可以通过继承AbstractMap来减少重复编码。(03) SortedMap 是继承于Map的接口。
阅读全文
posted @
2018-09-27 17:08
溪水静幽
阅读(288)
推荐(0) 编辑
TreeMap红黑树
摘要:以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。 总体介绍 Java TreeMap实现了SortedMap接口,就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身
阅读全文
posted @
2018-09-27 16:14
溪水静幽
阅读(178)
推荐(0) 编辑
ArrayDeque详解
摘要:当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque,当需要使用队列时也就首选ArrayDeque了(次选是LinkedList)。 Deque接口:Deque的含义是“double ended queue”,即双端队列,既可以当作栈使用,也可以当作队列使用 下表
阅读全文
posted @
2018-09-26 18:05
溪水静幽
阅读(1389)
推荐(1) 编辑
Stack源码
摘要:简介 Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。 java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,意味着,Stack也是通过数组实现的,而非链表 源码 总结: (01) Stack实际上也是通过数组去实现
阅读全文
posted @
2018-09-26 11:38
溪水静幽
阅读(128)
推荐(0) 编辑
fail-fast机制
摘要:fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。 例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出Concurre
阅读全文
posted @
2018-09-25 12:38
溪水静幽
阅读(158)
推荐(0) 编辑
集合综述
摘要:Java集合工具包框架图(如下): Collection包含了List和Set两大分支。 (01) List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。 List(后缀):有序(存入和取出的顺序一致)列表,允许存放重复的元素; ArrayList:数组实现,查询快,增删慢,线程
阅读全文
posted @
2018-09-24 21:26
溪水静幽
阅读(86)
推荐(0) 编辑
hashCode与equals
摘要:equals的作用 equals() 的作用是 用来判断两个对象是否相等。 equals() 定义在Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。源码如下: public boolean equals(Object obj) { return (
阅读全文
posted @
2018-09-23 10:21
溪水静幽
阅读(139)
推荐(0) 编辑