我想做的是从最大到最小对列表中的值进行排序。我正在尝试使用 Collections.sort(mylist) 但我不确定使用什么比较器将它们从最大到最小排序。关于如何做到这一点的任何建议?
问问题
29834 次
6 回答
7
你也可以这样做
Collections.sort(myList);
Collections.reverse(myList);
编辑:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class A {
public static void main(String[] args) {
List<Integer> myList = new ArrayList<Integer>();
myList.add(5);
myList.add(1);
myList.add(3);
myList.add(2);
myList.add(9);
myList.add(15);
Collections.sort(myList);
Collections.reverse(myList);
System.out.println(myList);
}
}
于 2013-07-01T16:53:51.417 回答
3
您可能需要为您包含的对象使用比较器,或者您的对象实现Comparable。Collections.sort()然后会做你想做的事。
另请注意,您可能会导致结果上升,您可以使用Collections.reverse()反转结果,而不是创建新的比较器。
Npote 还引用的方法排序到位,并会影响您的原始列表。您可能希望创建一个新的排序列表(在这种情况下复制列表然后对其进行排序)
(我现在看到您正在使用整数,以上适用于 wrt。可比)
于 2013-07-01T16:44:55.810 回答
3
递增排序比较器的公认标准是o1.intValue()-o2.intValue()
我们将简单地扭转这一点:
Comparator ourComparator=new Comparator<Integer>(){
public int compare(Integer o1, Integero2) {
return o2.intValue()-o1.intValue();
}
然后,您可以执行以下操作:
Collections.sort(ourCollection, ourComparator);
仅当您的列表已按升序排序时,反向操作才适用,由于您没有指定类型,因此无法保证。
于 2013-07-01T16:48:49.420 回答
2
您可以使用此代码按 id 排序,例如:
public static class SceneComparator implements Comparator<Scene> {
@Override
public int compare(Chair sc, Chair scc) {
return (sc.getId() > scc.getId()) ? -1
: (sc.getId() < scc.getId()) ? 1 : 0;
}
}
List<Scene> scenes = myClass.getScenes();
Collections.sort(scenes, new ScenesComparator());
希望你觉得它有用
干杯,
于 2013-07-01T16:49:55.507 回答
0
这是简短而甜蜜的:
Integer[] numArray = {1, 2, 3, 4, 5, 0, 9, 8, 7, 6};
List<Integer> numList = new ArrayList<>(Arrays.asList(numArray));
Collections.sort(numList , Collections.reverseOrder());
输出:
[9、8、7、6、5、4、3、2、1、0]
于 2020-01-09T14:25:00.917 回答
0
这是另一个干净的解决方案。
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
class Solution {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(1, 6, 3, 8, 5, 9, 2, 7, 4);
lst.sort(Collections.reverseOrder());
System.out.println(lst);
}
}
输出
[9, 8, 7, 6, 5, 4, 3, 2, 1]
于 2020-08-21T02:28:26.140 回答