zoukankan      html  css  js  c++  java
  • Java 集合总结

    一、集合

    (1)集合接口

    Collection

    -List

    -Queue

    -Set

    Map

    (2)Collections工具类

    • binarySearch
    • sort
    • reverse
    • max
    • min
    • shuffle
    • fill
    • copy
    • synchronizedXXX

    二、List

    (1)ArrayList                              默认容量为10,1.5倍增长,线程不安全

    (2)LinkedList                            双向链表实现,线程不安全

    (3)CopyAndWriteArrayList        线程安全,通过复制数据达到最终的同步,不能确保同时同步,高性能的读,写操作性能低

    (4)Vector                                  默认容量为10,2倍增长,线程安全,性能低,在所有方法上加synchronized

    (5)Stack                                  线程安全,继承Vector

    三、Queue

    (1)LinkedList                                                     双向链表实现,线程不安全

    (2)PriorityQueue                                               优先队列,默认返回最小值,使用小顶堆排序,可以设置Comparator比较器,不允许null值 

    (3)PriorityBlockingQueue                                  线程安全,阻塞队列,不允许null值 

    (4)ArrayBlockingQueue                                    容量不可改变的,线程安全的阻塞队列,不允许null值 

    (5)LinkedBlockingQueue                                  自动增长的链表,线程安全的阻塞队列,不允许null值 

    (6)SynchronousQueue                                    单个容量且线程安全的阻塞队列,不允许null值 

    (7)LinkedBlockingDeque                                 双向链表,线程安全的阻塞队列,不允许null值 

    (8)ConcurrentLinkedQueue                            CAS算法线程非阻塞同步,不允许null值 

    (9)ConcurrentLinkedDeque                            双向队列,CAS算法线程非阻塞同步,不允许null值    

    四、Set

    (1)HashSet                                                    内部使用HashMap的key,线程不安全

    (2) LinkedHashSet                                        线程不安全,继承自HashSet,维护一个双向链接列表,迭代顺序可为插入顺序或是访问顺序。

    (3)TreeSet                                                    线程不安全,有序排序的集,实现NavigableSet,SortedSet接口,内部使用TreeMap的key ,不允许null值   

    (4)EnumSet                                                   线程不安全,一个abstract枚举集,由它子类实现。noneOf(EnumClass)获取枚举Set的子类

    (5)CopyOnWriteArraySet                              线程安全的,内部使用CopyOnWriteArrayList存储,读效率高,写效率低          

    (6)ConcurrentSkipListSet                              线程安全的,实现NavigableSet,SortedSet接口,内部使用ConcurrentSkipListMap存储,不允许null值       

    五、Map

    (1)HashMap                                                            线程不安全,key与value运行为null,效率高

    (2)LinkedHashMap                                                 继承HashMap,维护的是一个按顺序存放的双向链表,作为迭代器遍历。

    (3)WeakHashMap                                                  继承HashMap,弱引用key,没有外部引用被gc回收

    (4)ConcurrentHashMap                                          JDK1.7版本的ReentrantLock+Segment+HashEntry到JDK1.8版本中synchronized+CAS+HashEntry+红黑树,分段锁线程同步,key和value都不允许为null,方法get,clear,iterator 都是弱一致性的

    (5)ConcurrentSkipListMap                                      CAS算法线程同步,key和value都不允许为null

    (6)Hashtable                                                           synchronized方法线程同步,key和value都不允许为null,效率低

    (7)EnumMap                                                           枚举Map,线程不安全,key不允许null,value可以为null

    (8)TreeMap                                                             线程不安全的有序的排序Map,实现NavigableMap,SortedMap接口,key不可以为null,value可以为null

    (9)Properties                                                           继承hashtable,线程同步,使用synchronized方法

    六、总结

    (1)hash   hashcode

    • HashMap
    • LinkedHashMap
    • WeakHashMap
    • ConcurrrentHashMap
    • Hashtable
    • HashSet
    • LinkedHashSet

    (2)concurrent

    ConcurrentLinkedQueue

    ConcurrentLinkedDeque

    ConcurrentHashMap

    ConcurrentSkipListMap

    ConcurrentSkipListSet 

     不允许有null值存在

    (3)CopyAndWrite      COW

    CopyAndWriteArrayList

    CopyAndWriteArraySet

  • 相关阅读:
    hdu2084 DP
    hdu 2080 夹角有多大(弧度制)
    hdu2078复习时间
    hdu2077
    hdu 2051
    hdu 2050
    hdu 5514Frogs
    ARM指令
    ARM寄存器
    树莓派ARM汇编
  • 原文地址:https://www.cnblogs.com/maokun/p/7538350.html
Copyright © 2011-2022 走看看