Java List set Map 之间的区别

--List Set Map 之间的区别

  List是可重复集合,Set是不可重复集合,这两个接口都实现了Conllection父类接口。

  但是,Map并没有继承Conllection,他是一个独立的接口,Map是一种把键对象和值对象进行映射的集合,他的每一个元素都包含了一对键对象和值对象,Map中存储的数据是没有顺序的,它的key是不能重复的,他得值是可以有重复的。


--List的实现类(ArrayList,Vector,LinkedList)

  ArrayList和Vector内部是线性动态数组结构,所以查询效率上会高很多,Vector是线程安全的,相比ArrayList线程是不安全的,所以性能会稍慢一些。

  LinkedList:是双向链表的数据结构存储数据,在做查询时会按照序号索引数据进行前向和后向遍历,查询效率偏低,但插入数据时只需要记录本项的前后项即可,所以插入速度较快。


Set的实现类有HashSet和TreeSet

  HashSet:它的内部是哈希表(实际上是一个HashMap实例)支持的。但他不保证set元素的迭代顺序。

  TreeSet:TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序。

Map接口有三个实现类:Hashtable,HashMap,TreeMap,LinkedHashMap

  Hashtable:内部存储的键值对是无序的,是按照哈希算法进行排序,与HashMap最大的区别就是线程安全。键或者值不能为null,为null就会抛出空指针异常。

  TreeMap:基于红黑树(red-black tree)数据结构实现,按key排序,默认的排序方式升序。

  LinkedHashMap:有序的Map集合实现类,相当于一个栈,先put进去的最后出来,先进后出。

List和Map区别

一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复,Map中存储的数据是没有顺序的,其key是不能重复的,他得值是可以有重复的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容