Deque,AbstractQueue和PriorityQueue源代码阅读笔记

Deque:

1,语义上多了几个用于栈的方法,pop和push。

2,降序迭代器,descendingIterator

 

AbstractQueue:

1,其实就是实现了几个仍Exception的方法,都是通过调用那些非Exception方法实现的。addAll如果传入自己会抛错。然后就是clear的方法写的。很有个性。不过不推荐那么写。复杂的逻辑,最好加上括号。不然会引起歧义。

 

PriorityQueue:

1, 其容器是一个object的数组。简单的说,就是一种数据结构“堆”。其本质是一种二叉树。父亲为n。儿子分别是2(n+1)和2n+1

 

2, 数组queue的默认长度是11。

 

3,构造函数,参数为Collection的那个,会判断一下,参数是不是SortSet或者PriorityQueue。其实就是取了他们的comparator。换句话说。如果你自己构建一个有序的集合类。要转换成PriorityQueue的话,也就不能获得其comparator

 

4,没有public的enableCapacity的方法,倒是有一个类似功能的grow方法,换句话说。如果数据量比较大的话。最好初始的量大一点。而这个量,要看的是层数。不过也不要不要太大。最好有计算。因为要多,就是多一层。层数高了之后,很恐怖

 

5, add就是堆的寻找合适位置。算法水平不够。看得不是很懂。

你可能感兴趣的:(abstract)