hashset是无序的,list是有序的,请问这句话是什么意思,怎么理解
发布网友
发布时间:2022-03-26 07:55
我来回答
共5个回答
热心网友
时间:2022-03-26 09:25
List,Set都是继承自Collection接口。List特点:元素有放入顺序,元素可重复 。Set特点:元素无放入顺序,元素不可重复。注意,元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的。
有序或无序是指是否按照其添加的顺序来存储对象。List 是按照元素的添加顺序来存储的。而 Set 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以Set集合不能有重复的元素,也不能保证内部存储是按元素添加的顺序而存储的。
List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet。
扩展资料:
HashSet输入顺序:
1、当输入的值大小和底层数组大小差不多的时候,HashSet的输入顺序是无序的,但输出是有序的,因为这些数的哈希值,在底层是顺序拍的,故输出也是有序的。
2、而当输入的值大小和底层数组相差很大时,大的数的哈希值有可能是小于比他小的数的,这时候输出的结果就是无序的。
热心网友
时间:2022-03-26 10:43
有序指的是存储顺序和添加顺序是相同的,并且可通过它的下标进行访问。而无序则刚好相反,它存储顺序和添加顺序无关,它是没有下标的,当然也就不能通过下标访问喽
热心网友
时间:2022-03-26 12:17
举个简单的例子吧,比如有元素1,2,3,4
那么按顺序插入hashset与list中,但输出不同
hashset无序,所以各种可能的输出都有可能,比如4,2,3,1
而list有序,肯定会输出1,2,3,4追问我试过N次了,hashset跟List输出结果都是一样的。。。
追答我需要修改一下答案,不过我可以告诉你Hashset就是无序的,但不是我之前说的都有可能,hashset不会按顺序存储你输入的数据你说你测试过n次了 我想问问你用了几个数据测试?3个还是10个,如果再用多一点数据,你会发现是无序的,之前的所谓“有序”只是偶合罢了,另外如果你使用String这类的特殊类型,你会发现,用三个数据来测试就会发现是无序的。
热心网友
时间:2022-03-26 14:09
首先说明一下:HashSet和List集合底层都是数组,这个是前提
1.List集合是有序的,是指集合元素的添加顺序和底层数组的索引的顺序是一致的,比如插入第一个元素,索引就是0,插入第二元素索引为1...依次类推
2.hashSet底层也是一个数组.数组本身是有索引的,数组本身肯定是有序的.但是我们这里说的无序指的是元素的插入顺序跟底层保存在数组中的索引位置没有关系,也就是插入的第一个元素其底层数组中对应的索引不一定是0.
最后说下自己关于hashSet数据结构的理解(可能不准确,接受和平批判,不接受喷子/杠精):hashSet保存元素到数组的时候是这么保存的,会根据保存元素的hashCode(),算出来一个hashCode值,然后hashCode值再经过一些算法算出来索引,然后根据这个索引保存这个元素.
热心网友
时间:2022-03-26 16:17
0就是指定HashSet的初始容量为0的意思 不过你构造初始容量为0好像没啥意义
hashset是无序的,list是有序的,请问这句话是什么意思,怎么理解
有序或无序是指是否按照其添加的顺序来存储对象。List 是按照元素的添加顺序来存储的。而 Set 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以Set集合不能有重复的元素,也不能保证内部存储是按元素添加的顺序而存储的。List接口有三个实现类:LinkedL...
hashset是无序的,list是有序的,请问这句话是什么意思,怎么理解
hashset无序,所以各种可能的输出都有可能,比如4,2,3,1 而list有序,肯定会输出1,2,3,4
java中set和list的区别
一: Set 不允许重复,List允许重复 二: Set 无序,List有序 .这里的无序和有序, 是说的添加顺序和元素顺序的一致性.比如添加时是obj1,obj2,obj3 ,那么list存储他们的顺序就是obj1,obj2,obj3 而set集合的存储顺序就不一定了,可能是obj2,obj1,obj3 Set和List的参考代码 import java.util.Arr...
java set 顺序
linkedhashset是有序的,hashset是无序的。linkedhashset是以链表形式存放数据的,hashset是用hash散列存放数据的。list也分好几种,主要有arraylist和linkedlist,都是有序的,其中arraylist类比数组,linkedlist类比链表。arraylist是线程不同步的,也就是说多个线程同时操作一个list那么List中存放数据的一致性...
List、Set、Map三种集合的区别
Set接口是Collection接口的一个子接口,是无序的,set中不包含重复的元素,也就是说set中不存在两个相同的元素,在添加数据时会根据当前这个元素的hash值去比较集合中已有的元素,如果已存在相同的集合,添加方法会返回一个false,表示添加失败。主要使用它的俩个实现类 HashSet:可以存放任意类型和任意个数...
java中list存储有顺序吗
list是有顺序的,hashset是无序的,treeset是有序的
list、set和map之间的主要区别是什么?
1. List:有序集合,允许重复元素,通过索引访问,插入顺序与迭代顺序一致,实现类有ArrayList、LinkedList等。2. Set:不允许重复元素的集合,元素无序,不能通过索引访问,实现类有HashSet、LinkedHashSet、TreeSet等。3. Map:键值对集合,每个键对应一个值,不允许键重复但允许值重复,实现类有Hash...
java中 List 与Set 的区别
由Collection接口派生的两个接口是List和Set。List接口 List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。 除了具有Collection接口必备的iterator()方法外,...
java有哪些有序集合
1、List:有序的collection(也称为序列)。此接口可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。列表允许重复的元素。ArrayList:特点:有序的、线性的、无固定大小的、有下标的、先进先出。2.Set:是简单的集合,它的对象不按特定方式排序,...
java中set和list的区别
set和list都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 List的功能方法 实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法...