List Set Map之间的不同

它们都继承自Collection类。
10点不同:

序号属性java.util.Listjava.util.Setjava.util.Map
1重复元素List允许存储重复元素。Set不允许存储重复元素。Map以键值对形式存储数据,key不允许重复,value可以重复。
2插入顺序List以插入顺序存储元素。大部分Set实现类不维护插入顺序。
HashSet不维护插入顺序。
LinkedHashSet维护插入顺序。
TreeSet自然顺序排序。
大部分Map实现类不维护插入顺序。
HashMap不维护插入顺序。
LinkedHashMap维护key的插入顺序。
TreeMap以key的自然顺序排序。
3null keysList允许存储多个null值。大部分Set实现类允许存储一个null值。
TreeSet和ConcurrentSkipListSet不允许存储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
6listIteratorlistIterator方法遍历元素并返回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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值