美文网首页
List Set Map之间的不同

List Set Map之间的不同

作者: Java_Explorer | 来源:发表于2018-03-31 11:58 被阅读13次

    它们都继承自Collection类。

    10点不同:

    序号 属性 java.util.List java.util.Set java.util.Map
    1 重复元素 List允许存储重复元素。 Set不允许存储重复元素。 Map以键值对形式存储数据,key不允许重复,value可以重复。
    2 插入顺序 List以插入顺序存储元素。 大部分Set实现类不维护插入顺序。
    HashSet不维护插入顺序。
    LinkedHashSet维护插入顺序。
    TreeSet自然顺序排序。
    大部分Map实现类不维护插入顺序。
    HashMap不维护插入顺序。
    LinkedHashMap维护key的插入顺序。
    TreeMap以key的自然顺序排序。
    3 null keys List允许存储多个null值。 大部分Set实现类允许存储一个null值。
    TreeSetConcurrentSkipListSet 不允许存储null值。
    Map实现类:
    HashMap允许一个null键多个null值
    LinkedHashMap允许一个null键多个null值
    TreeMap不允许null键允许多个null值
    Hashtable不允许null键和null值
    ConcurrentHashMap不允许null键和null值
    ConcurrentSkipListMap不允许null键和null值
    4 获取指定索引的元素 List实现类提供了get方法获取指定索引的元素。get方法直接通过指定索引获取元素,因此时间复杂度为O(1)。 Set实现类不提供此类方法。 Map实现类不提供此类方法。
    5 子类 ArrayList
    LinkedList
    Vector
    CopyOnWriteArrayList
    HashSet
    CopyOnWriteArraySet
    LinkedHashSet
    TreeSet
    ConcurrentSkipListSet
    EnumSet
    HashMap
    Hashtable
    ConcurrentHashMap
    LinkedHashMap
    TreeMap
    ConcurrentSkipListMap
    IdentityHashMap
    WeakHashMap
    EnumMap
    6 listIterator listIterator方法遍历元素并返回ListIterator对象。
    listIterator相对iterator方法提供了额外的方法:hasPrevious(), previous(), nextIndex(), previousIndex(), add(E element), set(E element)。
    Set没有提供类似listIterator的方法,只是简单返回Iterator。 Map提供了三种iterator:
    map.keySet().iterator()
    遍历key并返回Iterator对象。
    map.values().iterator()
    遍历value并返回Iterator对象。
    map.entrySet().iterator()
    遍历key和value并返回Map.Entry对象。
    7 结构和调整大小 List是可调整大小的数组。 Set使用Map实现。因此Set的结构和调整大小与Map相同。 Map使用哈希技术存储键值对。
    8 基于结构/随机访问的索引 ArrayList使用基于索引的数组实现,因此提供了随机访问。LinkedList不是基于索引的结构。 Set不是基于索引的结构。 Map不是基于索引的结构。
    9 非同步的子类 ArrayList
    LinkedList
    HashSet
    LinkedHashSet
    TreeSet
    EnumSet
    HashMap
    LinkedHashMap
    TreeMap
    IdentityHashMap
    WeakHashMap
    EnumMap
    10 同步的子类 Vector
    CopyOnWriteArrayList
    CopyOnWriteArraySet
    ConcurrentSkipListSet
    Hashtable
    ConcurrentHashMap
    ConcurrentSkipListMap

    http://www.javamadesoeasy.com/2016/02/difference-between-list-set-and-map-in.html

    相关文章

      网友评论

          本文标题:List Set Map之间的不同

          本文链接:https://www.haomeiwen.com/subject/pgjgcftx.html