总结下:1 iterator pattern 2 for-each循环 3 Collections默认的Comparator 4Collection集合的实现和一些细节,书第四部分的时候回头再看。
iterator pattern 就是抽象出集合类的公共行为(用接口描述),接口的实现用与原来的类无关的方式统一访问原始的类
设计的时候在集合类的内部有个iterator方法(工厂方法)得到iterator,传递的是集合自身的引用
这样设计的结果是客户不会使用到集合类对应的iterator类,只会使用到接口iterator,很好的体现programming to an interface。
一般集合类自身的iterator类被设计成inner class--内部类
并发的时候注意维护原始集合的稳定
collection接口扩展了Iterable接口,这个接口必须实现java.util.Iterator的iterator方法实现。因此可以使用for-each循环
optional interface method:抛出异常即可
Collections的DefaultComparator使用的是类自身实现的Comparable接口的ComparedTo方法,同样的还有自带的ReverseComparator
排序方式:Arrays.sort(array) array实现了Comparable接口 Arrays.sort(array,new Comparator(){})
对于插入删除操作来说,也要区分是低端还是高端加入删除,高端插入删除数组性能并不差
LinkList删除元素用迭代器查找然后删除更合适,因为方法get()和remove()代价都过大。
Stack: push pop peek
Queue:enqueue dequeue element
TreeSet:底层是平衡二叉查找树,用binary search tree(二分查找树)也可以在O(lgN)时间内找到第K小的元素???
HashSet使用必须重写hashCode()方法保证Set的唯一性
同理对应Map,Map没有iterator,但得到KeySet、EntrySet、values集合后,这里得到的是视图。
PriorityQueue的操作只有deleteMin、findMin、insert 通过binary heap实现(这个就是最小堆???),应用一般是最小的优先级是最高的。