Java中List、Set、Map三者的区别

    前言:笔者为21届应届毕业生,渣渣二本学校,昨天去面试的时候面试官问了我这个问题。当时有点懵圈了,因为平时在项目中只是使用它们,并没有深入了解三者的具体区别。因此,我记录一下自己的面试随笔,希望加深自己印象的同时也解决一些大家的疑惑。

  • List、Set、Map都是实现了Collection接口的接口
  • 重复性

    List允许存在重复的元素,可以在不影响现有元素的值及其索引的情况下插入一个新的重复元素。

    Set不允许存在重复的元素,所以不能插入重复元素。

    Map是一种以键值对的形式存储元素的映射类集合,key(键)是唯一的,value(值)可以为重复的。

  • 空值性

    List允许任意数量的空值。

    Set只允许一个空值。

    Map只允许出现一个空键(key),但可以是任意数量的空值(value)。

  • 排序性

    List保持每个插入元素的排序,有序排列。

    Set中的元素都是无序的,但是某些Set的实现类可以以某种顺序对其中的元素进行排序,例如LinkedHashSet按照元素的插入顺序进行排序。

    Map也属于无序存储,但是某些Map的实现类可以对元素进行排序,例如TreeMap按照元素的升序进行排列,LinkedHashMap按照元素的插入顺序进行排列。

  • 实现类

    List:ArrayList、LinkedList等

    Set:HashSet、LinkedHashSet、TreeSet、SortedSet等

    Map:HashMap、LinkedHashMap等

  • 使用场景

    如果你经常需要对元素的索引值进行查询,可以使用List(ArrayList)。

    如果你的数据不允许重复值存在,可以使用Set。

    如果你需要对元素的插入顺序进行保留,可以使用List或者LinkedHashSet。

    如果你需要对元素进行键值映射,可以使用Map。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值