Comparator<丅>接口

如何用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());
        }
    }
}