List和Set的区别
-
List:可重复,有序,数组或者链表存储
-
Set:不可重复,无序,使用ma存储
你不会以为面试就这么回答吧!15s就没了?你回去等通知吧!!!
回答区别的中间一定要引出ArrayList或者HashSet等细节,引导面试官提问
List
- List用的最多的就是ArrayList和LinkedList
- 因为ArrayList底层是数组,LinkedList底层是链表,这两种数据结构添加数据都只是在末尾添加,并不需要判断数据是否会重复
- 所以List中的元素是可以重复的
- 并且因为都是在末尾添加数据,所以存数据的顺序,和取出数据的顺序都是有序的
Set
-
Set用的最多的应该是HashSet
-
因为HashSet底层其实是HashMap,底层数据结构其实是散列表,也就是数组加链表的形式
-
而散列表添加数据是通过hash算法得到数组索引,找到链表位置才添加数据的
-
所以Set的添加数据是不按照顺序添加的,所以Set肯定是无需的
-
至于Set可不可以存储重复的数据,对Map而言,如果key已经存在会替换掉旧value值,key不存在也会添加到链表的末尾
-
所以Set如果key已经存在,最多只是会换个value存储,而Set只考虑key的值,所以也不会有重复值了
大帅比,点赞了没?