Java 数组按类排序

标签 java arrays

这是我正在尝试做的事情的示例:

public class Item {
    private int worth;

    public Item(int worth) {
        this.worth = worth;
    }

    public int getWorth() { return worth; }
}

public class Foo {
    public Foo() {
       List<Item> items = new ArrayList<>();
       items.add(new Item(50));
       items.add(new Item(892));
       items.add(new Item(12));
       // Sort?
    }
}

这样项目就会像这样排序

List{
    Item(892)
    Item(50)
    Item(12)
}

不太确定我应该从这里开始,如果我能弄清楚如何按类内部的整数对其进行排序,那么 Arrays.sort() 方法将是令人惊奇的。

最佳答案

您可以创建自己的类来实现 Comparator<Item> 。您需要定义的唯一方法是 the compare method ,比较 2 Item s。它分别返回负数、0 或正数,具体取决于第一项是否小于、等于或大于第二项。

在本例中,采用降序排序,当第一项小于第二项时返回正数,当第一项大于第二项时返回负数。这将创建降序排列。

Arrays.sort用于数组,但是 Collections.sort对集合做同样的事情(并且它在内部使用 Arrays.sort )。这两种方法只需要调用者知道如何比较项目,以便它可以正确地对它们进行排序。

传递您的 Comparator 的实例调用 Collections.sort ,它会为您对列表进行排序。

关于Java 数组按类排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835082/

相关文章:

java - 避免在调用监听器之前执行代码?

java - 为什么 GSM 调制解调器不响应程序但响应 super 终端或扩展坞灯?

C - 使用指针算法转置多维数组

C++ 不需要返回值

java - 停止 android 中的自定义处理程序

java - 没有内部类的 Json Jackson 反序列化

java - 尝试从 XML 创建 POJO 时获取不支持的媒体类型

c++ - 为什么允许根据用户输入声明具有大小的自动数组?

c# - 嵌套数组的 Lambda

arrays - 在 Xcode 10.2 中将数组读取和写入文本文件的代码