按对象的属性之一(双值)对对象的数组列表进行排序
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
我正在尝试对 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