这是我正在尝试做的事情的示例:
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/