当前位置:首页 > 技术 >

list和set哪个是有序的(set集合为什么是无序不重复的)

来源:原点资讯(www.yd166.com)时间:2022-10-25 05:07:13作者:YD166手机阅读>>

今天说一说集合,在面试的时候出现的频率非常高,开发中使用的频率也非常高。经常听到有人说List是有序,Set是无序,那么这个有序和无序指的究竟是什么呢?

list和set哪个是有序的,set集合为什么是无序不重复的(1)

这里有两个概念,一个是存取元素的顺序,比如我存的时候是3 4 5 1 2 ,那么取出来也应该是3 4 5 1 2 或者 2 1 5 4 3 。另一个是元素在容器中大小顺序,更准确说是排序。如果说区分了这两个概念,就好说了,看上面的体系图,List家族有两名大将,分别是ArrayList和LinkedList。而Set家族里主要有HashSet和TreeSet两名大将。

如果要按照存和取的顺序来讲,ArrayList和LinkedList就属于有序集合,因为ArrayList底层是动态数组实现的,而数组是一块连续的空间,每次存的时候都是找到索引,一个接着一个的存储,取的时候也要按照索引遍历出来。

list和set哪个是有序的,set集合为什么是无序不重复的(2)

链表也是一样,不是存到链表头就是存到链表尾。因为存和取的顺序有序,模拟栈(先进后出)和队列(先进先出)这两种数据结构也很容易。但这两种结构它们本身并不能对元素进行排序,这也决定了我不能轻易的找到数组或链表中的最大值和最小值,或者说元素和元素之间存储的并没有什么规律。

list和set哪个是有序的,set集合为什么是无序不重复的(3)

同样,按照存储顺序来讲,HashSet依赖哈希存储,计算哈希值之后,会分散到不同的存储位置上,这也就代表存储的时候,元素不是一个挨着一个存储的,而是根据每个元素的hash值,散列到了不同的位置。存取的顺序也是不能保证的,元素的排序顺序也是不能保证的,但好处就是存取效率高。

list和set哪个是有序的,set集合为什么是无序不重复的(4)

而TreeSet依赖的是树存储,在树这种结构中,无论是二分查找树,还是红黑树,在存储元素的时候都会对元素本身进行比较,按照大小放到合适的位置,这也就说明,元素会按照树的性质去存储,那么也就无法保证存和取元素的顺序。但是元素可以在存储的时候根据自身的大小排好序,从而可以很轻易的找到最大值,最小值,以及给定一个元素,找到比他大和比他小元素等操作。

list和set哪个是有序的,set集合为什么是无序不重复的(5)

总结:按元素存取顺序来说,List是有序的,Set是无序的。按照元素和元素之间的关系来说,List是无序的,TreeSet是有序的。而HashSet怎么说都是无序的。

栏目热文

list集合跟set集合的区别(set)

list集合跟set集合的区别(set)

推荐阅读一、特性两个接口都是继承自Collection,是常用来存放数据项的集合,主要区别如下:List和Set之间很重...

2022-10-25 04:37:56查看全文 >>

set和list哪个效率高(set集合为什么是无序不重复的)

set和list哪个效率高(set集合为什么是无序不重复的)

集合类是Java开发最常用的工具,也是面试经常会问到的问题。Java提供了高性能的集合框架,主要包括两种容器类型:一种是...

2022-10-25 04:47:01查看全文 >>

listsetmap区别(list map set 有什么特点)

listsetmap区别(list map set 有什么特点)

一、结构特点1、List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;2、List中存储的数据是...

2022-10-25 05:06:45查看全文 >>

list和set的操作方法(list和set的集合特点)

list和set的操作方法(list和set的集合特点)

大家好,我是吉森。今天的菜品是这样的:List、Set、数组、Map这些常用的数据结构之间怎么相互转换?下面,让我们一起...

2022-10-25 05:06:07查看全文 >>

list和set哪个查询快(list和map查询效率)

list和set哪个查询快(list和map查询效率)

一.排序1. List:有序、可重复。2. Set:无序、不可重复的集合。重复元素会覆盖掉。3. Map:键值对,键唯一...

2022-10-25 05:13:57查看全文 >>

list和set最大的区别(listsetmap三者的区别)

list和set最大的区别(listsetmap三者的区别)

list和set的区别:1、List和Set都是接口继承于Collection接口。2、最大的不同就是List是可以重复...

2022-10-25 04:54:19查看全文 >>

listset和map的区别(listsetmap集合的特点)

listset和map的区别(listsetmap集合的特点)

引言:Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中Java集合框架(常用接口)...

2022-10-25 05:13:15查看全文 >>

list 和set的共同点(list的set方法)

list 和set的共同点(list的set方法)

list与set的共同点:都是继承collection接口不同点:1、list元素是有顺序放入的,里面的元素是可以重复的...

2022-10-25 04:58:24查看全文 >>

东北最干净的城市排名(未来5年东北最吃香城市)

东北最干净的城市排名(未来5年东北最吃香城市)

有关哪里宜居的话题,一千个人眼里有一千个哈姆雷特,有的人喜欢温暖常青的南方,有的人则偏爱四季分明的东北。我们就拿中国北方...

2022-10-25 04:45:53查看全文 >>

东北环境最好的城市(东北最适合居住的城市排行)

东北环境最好的城市(东北最适合居住的城市排行)

在我国有着一个与朝鲜隔江相望的城市,站在江边,就可以眺望远处异国的景象。这里的风景十分优美,气候宜人。它更是人们评价为北...

2022-10-25 04:40:19查看全文 >>

文档排行