2015-07-27 2 views
-1

Я пытающегося сортировать ArrayList из BountyObject сек их собственности .getAmount() которая возвращает double ..Сортировка ArrayList объектов одним из их свойств (двойное значение)

Я смотрел на аналогичный вопрос о здесь и не указал мне в правильном направлении, может кто-нибудь объяснить, как я бы разобраться в этом:

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 
} 

Любая помощь будет принята с благодарностью, спасибо

ответ

2

Использование пособ ЦИИ, вы можете сделать это, как этот

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

Тогда сделайте это в основной:

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

Смежные вопросы