如何用comparable<T>接口,按照账户余额比较账户大小;同时用ComparaeName,比较账户名大小
public class Account implements Comparable<Account> {
private String name;
private double balance;
@Override
public int compareTo(Account other) {
if(this.balance > other.balance) {
return 1;
} else if(this.balance < other.balance) {
return -1;
} else {
return 0;
}
}
}
public class CompareName implements Comparator<Account> {
@Override
public int compare(Account acc1, Account acc2) {
return acc1.getName().compareTo(acc2.getName());
}
}
public class CompareTest {
public static void main(String[] args) {
List<Account> accounts = new ArrayList<>();
accounts.add(new Account("Alice", 1000));
accounts.add(new Account("Bob", 2000));
accounts.add(new Account("Charlie", 3000));
Collections.sort(accounts); // 按余额排序
System.out.println("按余额排序:");
for(Account account : accounts) {
System.out.println(account.getName() + ": " + account.getBalance());
}
System.out.println();
CompareName compareName = new CompareName();
Collections.sort(accounts, compareName); // 按名字排序
System.out.println("按名字排序:");
for(Account account : accounts) {
System.out.println(account.getName() + ": " + account.getBalance());
}
}
}