从最大到最小排序列表

时间:2013-07-01 16:41:29

标签: java android list sorting compare

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

6 个答案:

答案 0 :(得分:5)

你也可以这样做

    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);
}

}

答案 1 :(得分:3)

您的包含对象可能需要comparator,或者对象实现ComparableCollections.sort()然后会做你想做的事。

另请注意,您可能会导致结果上升,您可以使用Collections.reverse()反转结果,而不是创建新的比较器。

Npote也引用了方法到位并将影响您的原始列表。您可能希望创建一个新的排序列表(在这种情况下复制列表,然后对其进行排序)

(我现在看到你正在使用整数,以上适用于wrt。可比较)

答案 2 :(得分: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);

反向操作仅适用于您的列表已经按升序排序,但由于您未指定类型,因此无法保证。

答案 3 :(得分: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());

希望你发现它有用

干杯,

答案 4 :(得分: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]

答案 5 :(得分: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]