1、Queue继承自Collection,所以Queue不是传统的先进先出的队列,能够进行add和remove等操作。
LinkedList实现了DQueue接口,Dqueue接口继承自Queue,所以LinkedList实际上是一个双向队列。
PriorityQueue是Queue的实现类,内部采取的是极大堆。
BlockingQueue
2、Set
HashSet内部实际上是一个HashMap<K,Object> map。Set实际上是HashMap的keySet()。其Iterator是调用map.keySet().Iterator()来得到的。所以HashSet完全依赖的是HashMap。
3、HashMap的迭代器的遍历顺序是先遍历bucket为0的链表,然后再遍历bucket为1的链表,依次下去。
Map.Entry keySet()返回的是一个AbstractSet的子类(HashMap的内部类),其Iterator继承自HashIterator。因为keySet()返回的是HashMap的内部类,所以对keySet()返回的set进行remove操作的时候是会改变
HashMap的数据的,也就是删除了HashMap的一个key。add不能使用,否则抛不支持异常。
返回的set的操作实际上是根据迭代器进行操作的。
Collection values()也一样,返回的是AbstractCollection的子类。其Iterator也是继承自HashIterator。所以其遍历顺序也是和HashMap的遍历顺序一样。同样,remove操作也会删除HashMap的数据。但是不能使用
add(),否则会报不支持异常。
返回的collection实际上根据迭代器进行操作的。
4、只要是需要比较大小的,不能放null。如PriorityQueue,TreeSet等