当前位置: 首页高频题加分模版训练问题详情 【list 和 set】18、简单说一下 list 和 set 的区别?以及使用场景? 本问题对应的项目链接:高频题回答模版训练 指导:常规泛问题,说一下它们的特性即可,另外 list,set是顶级接口,还要简单说一两个它们的实现子类。
共以下 7 个回答
都是实现Collection,list有序可重复允许为空,支持索引。set无序不可重复,只有一个为空
List的实现子类有linkedlist和array list,他们都支持排序操作和添加重复元素的操作,他们的底层实现数据结构分别是数组和链表这里就不详细展开他们的时间复杂度区别了。总的来说,他们两个是我们最常用的集合。
Set的实现子类有hashset和treeset,HashSet的话它底层是使用的还是map来进行实现的,时间复杂度o1。它的value是一个常量,主要起作用呢还是它的key.所以说哈希特他具有无序性和不允许重复的特性,所以通常可以用来实现去重操作。而treeset它底层是使用的红黑树来进行实现的,时间复杂度logn,它支持排序操作,但他也不支持重复元素。很方便的一点就是它支持flow或selling这种操作来帮助我们方便的定位到我们想要查找的元素,在某些特殊的情况下能起到很好的效果。
【list 和 set】18、简单说一下 list 和 set 的区别?以及使用场景?
ArrayList LinkedList
HashSet TreeSet
两者都是可以存放指定类型的对象,list可以按照插入的顺序来存放元素,可以放重复的元素,可以根据索引查询元素;set可以自动去重,自动删掉重复的元素,它存放元素是无序的;
list常见的实现类有ArrayList LinkedList
set常见的实现类有HashSet、TreeSet
两者都继承自 Collection,都是用来存储数据的集合。其中 List 接口会维护元素的插入顺序,并且允许根据索引进行数据查询和操作。而 Set 接口只强调元素的不可重复性,不保证元素的特定顺序,也不支持索引查询。
List 接口常见的实现类有 ArrayList,LinkedList 等,前者底层为数组,适合随机访问多的场景。后者底层为双向链表,适合插入删除操作多的场景。
Set 接口常见的实现类有 HashSet,TreeSet 等,前者底层为哈希表,提供快速的插入,删除和查找性能,但不保证元素的顺序。后者底层为红黑树,元素间可以使用自定义比较器进行排序。
list插入和删除是有序的,元素有对应索引,能够按插入顺序访问元素,可以当成队列和栈使用,支持随机访问索引,常见的实现有ArrayList,LinkedList。应用在需要存储含重复元素的场景。
set插入和删除是无序的,元素不重复,不支持随机访问,不能按插入顺序访问,常见的实现类有HashSet,TreeSet,应用在比如需要元素不重复且不要求访问顺序的场景。
List是一个有序的集合,允许存储重复元素。
元素在List中按照插入顺序进行排序,并且每个元素都有一个对应的索引。
List接口的常见实现类有ArrayList、LinkedList和Vector。
可以通过索引访问List中的元素,也提供了一系列的操作方法,如添加、删除、修改等。
适用于需要保留元素插入顺序,并且可能包含重复元素的场景。
Set是一个不允许包含重复元素的集合。
元素在Set中没有特定的顺序,不保留插入顺序或排序顺序。
Set接口的常见实现类有HashSet、TreeSet和LinkedHashSet。
可以用来判断一个元素是否在集合中存在,具有高效的查找和判重性能。
适用于需要保证元素唯一性并且不关心元素顺序的场景。