美文网首页
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