集合框架比较

集合框架可以分为Collection和Map

Collection

  • Set:元素不重复(底层是Map)
    • HashSet
      • 集合中元素可以为null,但只有一个元素为null
      • 基于HashMap实现的,底层是Hash表,不能保证元素排列顺序
      • 元素对象比较是否重复:先调用hashcode方法,再调用equals方法  
    • TreeSet 
      • 基于TreeMap实现的,底层是红黑树,不允许元素是null
      • 支持排序:自然排序——元素实现Comparable接口调用compareTo方法比较大小,定制排序——自定义比较器类实现Comparator接口调用compare方法比较元素大小 
  • List:元素有顺序(索引顺序)
    • ArrayList
      • 底层是数组,查询快(索引),增删慢
      • 线程不安全,效率较Vector高
    • Vector
      • 底层是数组,查询快(索引),增删慢
      • 线程安全(同步影响性能),效率较ArrayList低  
    • LinkedList
      • 底层是一组连接的记录,是链表,查询慢(需要遍历),增删快(修改前后节点即可)
      • 线程不安全

Map(类比set)

  • HashMap
    • key和value可以为null,不安全 
  • TreeMap
  • Hashtable
    • key和value不能为null,安全 
  • Properties  

---------------------------------------------------------------------------------------------------------------------

线程不同步的集合如何转换成线程同步的集合:

  • 方法一:Collections中的静态方法

  • 方法二:java.util.concurrent包下提供的同步集合容器

原文地址:https://www.cnblogs.com/qf123/p/8611445.html