java集合

来源:互联网 发布:java 打war包命令 编辑:程序博客网 时间:2024/06/05 10:57

List接口

  • ArrayList
    • 动态数组,与Arr[]一样,不过默认情况下生成10个初始容量,并且可以动态扩容。
  • LinkedList
    • 双向链表
  • vector
    • 与ArrayList一样。但是线程安全的。
  • stack
    • 后进先出的堆栈

Set接口

  • EnumSet
    • 枚举类型的专用set,所有元素都必须是枚举类型
  • HashSet

    • 内部以HashCode实现,内部元素的顺序是由哈希码来决定的,不保证set的迭代顺序,特别是它不保证该顺序恒久不变。
    • 当向Set中插入数据时,会首先调用元素对象中的hashCode()方法,如果集合中不存在相同hashCode,则插入该元素。如果已经存在具有相同hashCode的元素,则会调用equals()方法进行比较,如果返回true,表示相同,不插入元素,否则插入元素。
    • 注意该类是非线程安全的,如果想获得线程安全的HashSet可以使用如下方法:
      Collections.synchronizedSet(new HashSet());
  • LinkedHashSet

    • 基于HashSet实现,但是保持元素的有序状态。内部维护一个双向链表。
    • 类是非线程安全的,如果想获得线程安全的LinkedHashSet可以使用如下方法:
      Collections.synchronizedSet(new LinkedHashSet());
  • TreeSet

    • 基于TreeMap来实现的,生成一个排序状态的Set。
    • 可以使用元素的自然顺序排序
    • 也可以根据创建Set时自定义的Comparator进行排序。
  • CopyOnWriteArraySet

    • 线程安全
    • 该类是基于CopyOnWriteArrayList实现的,所以该类共享CopyOnWriteArrayList的基本属性,对写操作加锁并即写时复制(Copy-On-Write,是用于程序设计中的一种优化策略),对多操作不加锁。线程安全等。
  • ConcurrentSkipListSet

    • SortedSet
    • 和TreeSet一样,添加的元素按照元素的自然顺序(递增或其他顺序)在集合中进行存储,或者根据传入的实现Comparator接口的实例来对元素进行排序。
    • 基于ConcurrentSkipListMap实现的,是线程安全的,并且其迭代器是弱一致的,不会抛出ConcurrentModificationException异常,可以并发地对集合处理其他操作。

Map接口

  • HashMap
    • 非线程安全
  • TreeMap
    • 键以某种顺序规则排序,内部以红黑树实现,实现了sortedMap接口
  • HashTable

    • hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!
  • ConcurrentHashMap

    • 线程安全
原创粉丝点击