Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 在集合中排序cusom类型(集合<;MyType>;)_Java_Set - Fatal编程技术网

Java 在集合中排序cusom类型(集合<;MyType>;)

Java 在集合中排序cusom类型(集合<;MyType>;),java,set,Java,Set,为什么我不能对集合进行排序mySet?我的代码如下。当我使用ArrayList时,这段代码工作得很好,但当我使用任何类型的Set时,都会出现此错误 Set<Auto> set = new HashSet<Auto>(); set.add(auto1); set.add(auto2); set.add(auto3); set.add(auto4); set.add(auto5); Collections.sort(set, new Comparator<Auto&

为什么我不能对集合进行排序my
Set
?我的代码如下。当我使用
ArrayList
时,这段代码工作得很好,但当我使用任何类型的
Set
时,都会出现此错误

Set<Auto> set = new HashSet<Auto>();

set.add(auto1);
set.add(auto2);
set.add(auto3);
set.add(auto4);
set.add(auto5);

Collections.sort(set, new Comparator<Auto>() {
    @Override
    public int compare(Auto o1, Auto o2) {
        return o1.getMarka().compareTo(o2.getMarka());
    }
});
Set Set=newhashset();
set.add(自动1);
set.add(自动2);
set.add(自动3);
set.add(自动4);
设置。添加(自动5);
Collections.sort(set,newcomparator(){
@凌驾
公共整数比较(自动o1、自动o2){
返回o1.getMarka().compareTo(o2.getMarka());
}
});

哈希集
不是有序集合;换句话说,它不包含特定顺序的元素

您可以将
HashSet
视为包含对象的包。当你把手伸进并一个接一个地拉出物体时,你不知道是按什么顺序取出元素的。您不能对包中的元素进行排序,因为包没有按照您对它们进行排序的顺序保存它们

元素的顺序丢失;因此,对
HashSet
进行排序没有任何效果(除了
Collections.sort
采用
列表而不是Mureinik注意到的
Set
,因此您的代码甚至不会编译)


如果您需要
集合中的元素具有特定的、已定义的顺序,请使用不同的
集合
实现,例如
树集
集合
没有顺序,因此无法对它们进行排序。如Javadoc中所示,收到一个
列表
,而不是任何
集合

请不要发布代码图像;只需将代码作为文本发布,并用4个空格缩进,以确保格式正确。