在第三章作业银行账户类的基础上,声明实现Comparble<T>接口,提供按照账户余额比较账户大小的方法;同时,使用Comparator<T>接口声明比较器类CompareName,按照账户名比较账户大小;编写main方法测试相应的接口实现方法。
时间: 2023-07-18 20:32:59 浏览: 128
好的,我知道了。以下是代码实现:
```java
import java.util.Comparator;
public class BankAccount implements Comparable<BankAccount> {
private String name;
private double balance;
public BankAccount(String name, double balance) {
this.name = name;
this.balance = balance;
}
public String getName() {
return name;
}
public double getBalance() {
return balance;
}
@Override
public int compareTo(BankAccount other) {
if (this.balance < other.balance) {
return -1;
} else if (this.balance > other.balance) {
return 1;
} else {
return 0;
}
}
public static class CompareName implements Comparator<BankAccount> {
@Override
public int compare(BankAccount a1, BankAccount a2) {
return a1.getName().compareTo(a2.getName());
}
}
}
```
在上面的代码中,我们实现了 `Comparable<BankAccount>` 接口,并覆盖了 `compareTo()` 方法,该方法按照账户余额比较账户大小。
同时,我们还声明了一个 `CompareName` 比较器类,它实现了 `Comparator<BankAccount>` 接口并覆盖了 `compare()` 方法,该方法按照账户名比较账户大小。
下面是 `main()` 方法的测试代码:
```java
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
BankAccount[] accounts = {
new BankAccount("Tom", 5000),
new BankAccount("Jerry", 2000),
new BankAccount("Bob", 8000)
};
// 按照余额排序
Arrays.sort(accounts);
for (BankAccount account : accounts) {
System.out.println(account.getName() + ": " + account.getBalance());
}
// 按照名字排序
Arrays.sort(accounts, new BankAccount.CompareName());
for (BankAccount account : accounts) {
System.out.println(account.getName() + ": " + account.getBalance());
}
}
}
```
输出结果为:
```
Jerry: 2000.0
Tom: 5000.0
Bob: 8000.0
Bob: 8000.0
Jerry: 2000.0
Tom: 5000.0
```
我们可以看到,第一次输出按照余额排序,第二次输出按照名字排序,两次输出结果不同。
阅读全文