使用Comparable和compareTo()

时间:2015-08-04 03:57:05

标签: java sorting arraylist comparable compareto

我有一个实施BankAccount超类的银行帐户程序,该程序扩展到CheckingAccount和SavingsAccount子类。

每个帐户都有四个属性:名字,姓氏,社会保障和余额。

我有一个BankDatabase类,它创建一个新的ArrayList来容纳每个对象。

我想使用Comparable接口和compareTo()方法对此ArrayList进行排序。

public interface Comparable<BankAccount>
{

    int compareTo(BankAccount other);       
}

我已经为我的超类实现了Comparable:

public abstract class BankAccount implements Comparable<BankAccount>

我写了下面的compareTo()方法:

@Override
    public int compareTo(BankAccount other)
    {

        if (this.getBalance() < other.getBalance())
        {
            return -1;
        }

        if (this.getBalance() > other.getBalance())
        {
            return 1;
        }

        return 0;
    }

我在BankAccount超类中创建了一个平衡吸气剂。 我试过使用just而不是this.getBalance()。 然后在我的BankDatabase类中,我尝试创建一个名为print()的void方法,该方法将按平衡对BankAccount对象进行排序并打印它们。

这是我没有遇到麻烦的地方。以下代码就是我现在所拥有的:

void print()
    {

        Collections.sort(database);

        for (BankAccount database1 : database)
        {

            System.out.println(database1);

        }

    }

对于此代码,我需要使用 Comparable compareTo(),因为它是作业的一部分。

我导入了java.util.ArrayList,java.util.Collections和java.util.List。

下面是我的BankDatabase类以及创建新的支票或储蓄帐户的两种方法:

public class BankDatabase
{

    String first;
    String last;
    List <BankAccount> database;

    BankDatabase()
    {

        database = new ArrayList <BankAccount>();

    }

    void createCheckingAccount(String customerName, String ssn, float deposit)
    {

        String[] customerNames = customerName.split(" ");
        first = customerNames[0];
        last = customerNames[1];

        database.add(new CheckingAccount(first, last, ssn, deposit));

    }

    void createSavingsAccount(String customerName, String ssn, float deposit)
    {

        String[] customerNames = customerName.split(" ");
        first = customerNames[0];
        last = customerNames[1];

        database.add(new SavingsAccount(first, last, ssn, deposit));

    }

非常感谢任何帮助。我一直在寻找其他线程,使用Collections看起来非常简单,但它仍然失败。

我得到的一个错误是:线程中的异常“main”java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型:java.util.Collections.sort

谢谢!

0 个答案:

没有答案