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_Comparable - Fatal编程技术网

Java:高效列表排序

Java:高效列表排序,java,sorting,comparable,Java,Sorting,Comparable,我有一个列表,其中包含数量可变的对象(通常超过1000个)。这些对象具有某些属性,例如price和distance(都是int) 现在,我希望能够将列表从最便宜到最昂贵或从最近到最远排序,但我不知道如何实现这一点。我已经尝试过让我的对象实现可比性,但这只允许我按其中一个属性排序。。。如何根据不同的属性进行排序?创建的两个不同实现-一个用于比较价格,另一个用于比较距离 然后,您可以使用任意排序策略对列表进行排序。您应该只使用集合。排序(…)并为每种排序类型(例如,按价格)实现自定义比较器 Coll

我有一个
列表
,其中包含数量可变的对象(通常超过1000个)。这些对象具有某些属性,例如price和distance(都是int)


现在,我希望能够将
列表
从最便宜到最昂贵或从最近到最远排序,但我不知道如何实现这一点。我已经尝试过让我的对象实现
可比性
,但这只允许我按其中一个属性排序。。。如何根据不同的属性进行排序?

创建的两个不同实现-一个用于比较价格,另一个用于比较距离


然后,您可以使用任意排序策略对列表进行排序。

您应该只使用
集合。排序(…)
并为每种排序类型(例如,按价格)实现自定义比较器

Collections.sort(effizientObjects, new Comparator<EffizientObject>() {
    @Override public int compare(EffizientObject p1, EffizientObject p2) {
        return p1.price- p2.price;
    }
});
Collections.sort(effizientObjects,newcomparator()){
@覆盖公共整数比较(EffizientObject p1、EffizientObject p2){
返回p1.price-p2.price;
}
});

到目前为止,我们唯一能看出的错误是您没有发布代码。相关/类似:注意:您应该使用(或
Double.compare
,或任何类型)来比较数值,而不是减法,以避免溢出。