按对象的属性之一(双值)对对象的数组列表进行排序

Sort arraylist of objects by one of their properties (double value)

我正在尝试对 BountyObject 中的 ArrayList 按 属性 .getAmount() 排序,其中 returns 和 double..

我在这里看过一个类似的问题,但它没有给我指明正确的方向,谁能解释一下我将如何对此进行排序:

List<BountyObject> sortedList = new ArrayList<BountyObject>();

for (BountyObject bo : bounties) // Where bounties is the original list of unsorted objects
{
    // Sort them into the sorted list by bo.getAmount() - highest to lowest value
}

任何帮助将不胜感激,谢谢

使用集合,你可以这样做

Collections.sort(bounties, new Comparator<BountyObject>() {
        @Override public int compare(BountyObject bo1, BountyObject bo2) {
            return (bo1.getAmount() >  bo2.getAmount() ? 1:-1); 
        }

实现Comparable<T>接口,像这样:

class BountyObject implements Comparable<BountyObject> {

    private final double amount;

    public BountyObject(double amount) {
    this.amount = amount;
    }

    public double getAmount() {
    return amount;
    }

    @Override
    public int compareTo(BountyObject o) {
    double otherAmount = o.amount;

    if (amount == otherAmount)
        return 0;
    else if (amount > otherAmount)
        return 1;
    else
        return -1;
    }
}

然后在 main 中执行此操作:

List<BountyObject> sortedList = new ArrayList<>();
sortedList.add(new BountyObject(2.0));
sortedList.add(new BountyObject(1.0));
sortedList.add(new BountyObject(1.5));

Collections.sort(sortedList);

for (BountyObject bo : sortedList)
    System.out.println(bo.getAmount());

输出:

1.0 1.5 2.0