java集合笔记

所有集合均可使用迭代器进行遍历

collocation接口

  collocation接口下有list接口与set接口


  list接口
    特点:有序,可重复

    ArrayList
      特点:底层数组结构,可以自动扩容,增删慢,查找快。运行效率高,线程不安全。初始容量为0,添加第一个元素时容量为10,1.5倍扩容。

    LinkedList:
      特点:底层链表结构,增删快,查找慢。运行效率高,线程不安全。(链表结构没有固定容量)

    Vector:
      特点: 底层数组结构,可以自动扩容,增删慢,查找快。运行效率低,线程安全。初始容量为10,2倍扩容,负载因子默认为1,可指定

    Stack:
      特点: 底层数组结构,继承自Vector,运行效率低,线程安全。

  set接口
    特点:无序,不可重复。可以使用比较器排序,比较器可以是实现Comparator接口,重写compare方法,也可继承Comparable类,重写ComparaTo方法,实现该接口为自然排序。

    HashSet:
      特点: 底层为数组加链表(哈希表),根据HashCode方法与equals方法判断元素是否重复,线程不安全

    TreeSet:
      特点: 底层为红黑树结构,TreeSet可以根据比较器或者根据元素来进行自然排序,不具备排序条件的元素放入TreeSet中会出现异常,不允许添加null元素,线程不安全

    LinkedHashSet:
      特点: LinkedHashSet是HashSet的子类,是set集合中唯一一个可以保证怎么存就怎么取的集合,LinkedHashSet,不允许元素重复,判断集合的方式与HashSet一致

Map接口
    HashMap:
      特点: 双例集合,元素以键值对形式存储,允许null键与null值,无序,键不可重复。JDK1.8之前为数组+链表,链表采用头插法,JDK1.8开始为数组+链表,数组+红黑树,链表采用尾插法,当数组长度大于等于8时自动转换为数组+红黑树,小于等于6时自动转回数组+链表,默认长度为16,扩容因子为0.75,两倍扩容,容量为2的幂

    ConcurrentHashMap:
      特点: 双例集合,线程安全,底层引入分段锁的概念,将数据分成几段存储,根据value的HashCOde判断存储在哪个segment中,JDK1.7以及之前底层为数组加链表,与HashMap的区别是,核心变量使用volatile修饰,JDK1.8时底层为数组+红黑树,方法中的部分代码使用synchroized代码块

初学者,难免会写错,欢迎指正

原文地址:https://www.cnblogs.com/datom/p/13536637.html