List,Set,Map的区别

开门见山,直接先上这副图,List和Set是Collection的子类 

List:

      1、可以允许重复的对象

      2、可以插入多个null元素

      3、是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序

      4、常用的实现类有ArrayList,LinkedList和Vector。ArrayList提供了使用索引的随意访问,底层结构是数组,优查询劣增删,而LinkedList经常用于添加或删除元素的场合,底层结构是链表

Set:

     1、不允许重复的对象

     2、无序容器,你无法保证每个元素的存储顺序,TreeSet通过Conparator或者Comparable维护了一个排序顺序

     3、只允许一个null元素

     4、Set常用的实现类是HashSet,LinkedHashSet以及TreeSet。最流行的是基于HashMap实现的HashSet,TreeSet还实现了SortedSet接口,因此TreeSet是一个根据其conpare()和compareTo()的进行排序的有序容器。

Map:

     1、Map不是collection的子接口或者实现类,Map是一个接口

     2、Map的每个Entry都持有俩个对象,一个键一个值,可能会持有相同的值对象但键对象必须是唯一的。

     3、TreeMap也通过Comparator或者Comparable维护了一个排序顺序

     4、Map里你可以拥有任意个null,但只能有一个null键

     5、常用的实现类HashMap,LinkedHashMap,Hashtable,TreeMap

总结:如何选择使用list,set或者map?(可以简单对他们之间的区别瞎几把乱扯)

1、如果经常使用索引来对元素进行访问,那么使用List,如果你已经知道索引了的话,那么List的实现类比如ArrayList可以提供更快速的访问,如果经常添加删除元素,那么选择LinkedList

2、如果想让容器中的元素能够按照他们插入的次序进行有序存储,那么还是List,因为List是一个有序容器

3、如果想要保证插入数据的唯一性,可以选择一个Set的实现类

4、如果你以键和值的形式进行数据存储那么Map是你正确的选择

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值