Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中按值对哈希集排序_Java_Sorting_Hashset - Fatal编程技术网

在java中按值对哈希集排序

在java中按值对哈希集排序,java,sorting,hashset,Java,Sorting,Hashset,HashSet中是否有一种方法允许它自己排序,而不是编写算法来排序?我知道文档中有一个迭代器,但它实际上是如何实现的?HashSet的迭代器没有排序,因为它只是按原样输出容器。事实上,更改类的实现、负载因子或任何其他参数几乎总是会更改迭代器的顺序。但是,您可以将设置值包装在列表中,并使用集合排序(列表)或集合排序(列表,比较器): 导入java.util.array; 导入java.util.Collections; 导入java.util.HashSet; ... HashSet为什么不直接使

HashSet中是否有一种方法允许它自己排序,而不是编写算法来排序?我知道文档中有一个迭代器,但它实际上是如何实现的?

HashSet的迭代器没有排序,因为它只是按原样输出容器。事实上,更改类的实现、负载因子或任何其他参数几乎总是会更改迭代器的顺序。但是,您可以将设置值包装在
列表中
,并使用
集合排序(列表)
集合排序(列表,比较器)

导入java.util.array;
导入java.util.Collections;
导入java.util.HashSet;
...

HashSet为什么不直接使用
TreeSet
A
HashSet
没有顺序。这在javadoc.或a中有明确的说明,它是为迭代而设计的。将其元素添加到
列表中并对其排序。可能老师不明白他们在问什么。这会不会弄乱集合中的任何重复项?@user2920965据我所知不会,但请阅读文档以确保。待定+1,但是这个例子没有编译
Collection#toArray
返回一个
Object[]
,并且
Object
不可比较,因此无法对其排序。您需要传入正确类型的数组。请注意,由于擦除,您无法将数组创建为
newt[]
。@yshavit。我不打算编译这个例子,因为那样只会分散对答案的注意力。但是,关于没有指定正确的输出类型,这一点很好。@yshavit我知道您不会允许我发布一个仓促捏造的答案。我很感激。
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
...
HashSet<? extends Comparable> myHashSet = ...;
...
List<? extends Comparable> sortedList = Arrays.asList(myHashSet.toArray(new Comparable[0]));
Collections.sort(sortedList);