容器

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等

   

                       

 

posted @ 2016-03-03 11:17  YDDMAX  阅读(131)  评论(0编辑  收藏  举报