2017-03-03 4 views
0

私は最近インターフェースで遊んでいて、Comparableを正常に実装し、BankAccountオブジェクトをその量でソートしました。一般的なinstace変数がdouble型であるさまざまなオブジェクトのArrayListをソート

ArrayListには、インスタンス変数「area」(double)を持つタイプBankAccountCountryのオブジェクトが含まれているとどうなりますか?どちらもdouble型の値を持ち、比較およびソートが可能です。

私の最初の質問は どのようにインスタンス変数としてdoubleを持つさまざまなオブジェクトを含むArrayListを並べ替えるには?ここで

は私のコードです:

/** 
    A bank account has a balance that can be changed by 
    deposits and withdrawals. 
*/ 
public class BankAccount implements Measurable, Comparable<BankAccount> 
{ 
    private Double balance; 

    /** 
     Constructs a bank account with a zero balance. 
    */ 
    public BankAccount() 
    { 
     balance = 0.0; 
    } 

    /** 
     Constructs a bank account with a given balance. 
     @param initialBalance the initial balance 
    */ 
    public BankAccount(Double initialBalance) 
    { 
     balance = initialBalance; 
    } 

    /** 
     Deposits money into the bank account. 
     @param amount the amount to deposit 
    */ 
    public void deposit(Double amount) 
    { 
     balance = balance + amount; 
    } 

    /** 
     Withdraws money from the bank account. 
     @param amount the amount to withdraw 
    */ 
    public void withdraw(Double amount) 
    { 
     balance = balance - amount; 
    } 

    /** 
     Gets the current balance of the bank account. 
     @return the current balance 
    */ 
    public double getBalance() 
    { 
     return balance; 
    } 

    public double getMeasure() 
    { 
     return balance; 
    } 
    public int compareTo(BankAccount o) 
    { 
    return this.balance.compareTo(o.getBalance()); 


    } 
} 

/** 
    A country with a name and area. 
*/ 
public class Country implements Measurable 
{ 
    private String name; 
    private double area; 

    /** 
     Constructs a country. 
     @param aName the name of the country 
     @param anArea the area of the country 
    */ 
    public Country(String aName, double anArea) 
    { 
     name = aName; 
     area = anArea; 
    } 

    /** 
     Gets the country name. 
     @return the name 
    */ 
    public String getName() 
    { 
     return name; 
    } 

    /** 
     Gets the area of the country. 
     @return the area 
    */ 
    public double getArea() 
    { 
     return area; 
    } 

    public double getMeasure() 
    { 
     return area; 


     } 
    } 


    public interface Measurable 
    { 
     double getMeasure(); // An abstract method 
    } 

import java.util.*; 
public class MeasurableTester 
{ 
    public static void main(String[] args) 
    { 
     // Calling the average method with an array of BankAccount objects 
    BankAccount b=new BankAccount(10.0); 
    BankAccount c = new BankAccount(2000.0); 
    List<BankAccount> accounts = new ArrayList<BankAccount>(); 

     accounts.add(b); 
     accounts.add(c); 


    BankAccount x= Collections.max(accounts); 
     System.out.println(x.getBalance()); 
    } 


} 
+0

'ArrayList'はタイプ' BankAccound'と 'Country'のオブジェクトが含まれていますか?あなたの 'BankAccount'と' Country'も同様のクラスを拡張していますか?あなたはクラスを見せてもらえますか? –

+0

自分のコードを含めるように投稿を編集しました – LakeParime

+1

「測定可能」つまり 'ArrayList 'をソートするオブジェクトを比較したいのですか? – Matt

答えて

3

あなたがMeasurablesと使用コンパレータのリストを使用する必要があります。

List<Measurable> measurableList = new ArrayList<>(); 
    measurableList.add(new BankAccount(10.0)); 
    measurableList.add(new Country("name", 44.5)); 

    measurableList = Collections.max(measurableList, Comparator.comparingDouble(Measurable::getMeasure)); 
+0

これはずっとこのように意味する – LakeParime

関連する問題