3

我想做的是从最大到最小对列表中的值进行排序。我正在尝试使用 Collections.sort(mylist) 但我不确定使用什么比较器将它们从最大到最小排序。关于如何做到这一点的任何建议?

4

6 回答 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

您可能需要为您包含的对象使用比较器,或者您的对象实现ComparableCollections.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 回答