java 集合类Collection及Map 常用类

集合

Collection

        |---List :元素是有序的,元素可以重复。因为此集合类有索引。

                |--ArrayList:(线程不同步)底层的数据结构使用的是数组结构,查找数据的速度较快。但是增删的操作稍慢,元素多的时候越明显。

                |--LinkedList:底层数据用的是链表数据结构。特点:增删速度很快,查询稍慢。

                |--Vector:(线程同步)被ArrayList代替了

                       |-- Stack 栈 后进先出 LIFO 线程安全,支持push(),top(),pop().

        |---Set :元素无序,元素不可以重复。

               |--HashSet:底层数据是哈希表,元素是无序的。添加、删除操作时间复杂度都是O(1)

                         |--LinkedHashSet 元素是有序的,是介于HashSet 和 TreeSet之间,内部是一个双向链表结构。

                    HashSet是如何保证元素的唯一性的呢?

                  是通过元素的俩个方法,hashCode和equals来完成的。如果元素的HashCode值相同,就去判断equals是否为ture。如果HashCode值不同,就不再判断 equals                       

              |--TreeSet  内部结构是一个树结构(红黑树),元素是有序的,添加、删除操作时间复杂度为O(log(n)),并且提供了first(), last(), headSet(), tailSet()等方法来处理有序集合。

              |--EnumSet 元素都是枚举对象有序,使用位向量的形式存储,占用内存小,运行高效,不允许存储null。

       |--- Queue 队列 FIFO

                |--Deque 双端队列 查询效率相比单项队列高 

                          |--LinkedList 元素是有序的,双向链表结构,增删快,随机查询和遍历较慢。

                          |--ArrayDeque 元素有序,数组结构,增删慢,随机查询和遍历较快。

                |--PriorityQueue 元素有序,但是不是按照插入顺序先进先出,而是按照大小排列,并非严格意义删的队列顺序

Map

    |--- HashTable 元素无序,key不能为null,线程安全

    |--- HashMap 元素无序,key和value 可以为null ,线程非安全。

               |--- LinkedHashMap 元素按按插入前后排序,比HashMap 插入稍慢,由于是链表结构迭代顺序会快。

    |--- AbstractMap 

                 |--- TreeMap 元素是有序的,基于红黑树实现。该ßß映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

 

       

                                                                                        

 

 

 

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章