用Java写出客户经理想要按照一定的优先顺序调查每个公司客户的信用情况,优先顺有两个要求,1、职级越高越优先,从高到底分别是 A\B\C\D\E。2、职级相同时,工资越高越优先。 有什么办法可以快速得到这个排序之后的清单?请写一个主方法测试类,把排序后的信息展示到工作台上。
时间: 2023-05-29 12:07:41 浏览: 48
以下是一个可能的解决方案:
```java
import java.util.*;
public class CustomerManager {
private List<Customer> customers;
public CustomerManager(List<Customer> customers) {
this.customers = customers;
}
public void sortByPriority() {
Collections.sort(customers, new Comparator<Customer>() {
@Override
public int compare(Customer c1, Customer c2) {
if (c1.getRank() != c2.getRank()) {
return c2.getRank() - c1.getRank(); // 职级越高越优先,从高到底
} else {
return c2.getSalary() - c1.getSalary(); // 职级相同时,工资越高越优先
}
}
});
}
public void printCustomers() {
for (Customer customer : customers) {
System.out.println(customer);
}
}
}
```
其中,`Customer`类表示一个客户,包含姓名、职级和工资三个属性,以及相应的getter和setter方法。`CustomerManager`类表示客户经理,包含一个客户列表,以及按照优先顺序排序的方法和打印客户信息的方法。
下面是一个测试类的例子:
```java
import java.util.*;
public class TestCustomerManager {
public static void main(String[] args) {
List<Customer> customers = new ArrayList<>();
customers.add(new Customer("Alice", "B", 50000));
customers.add(new Customer("Bob", "D", 60000));
customers.add(new Customer("Charlie", "A", 80000));
customers.add(new Customer("David", "B", 70000));
customers.add(new Customer("Eve", "C", 55000));
CustomerManager manager = new CustomerManager(customers);
manager.sortByPriority();
manager.printCustomers();
}
}
```
输出结果如下:
```
Charlie (A, 80000)
David (B, 70000)
Alice (B, 50000)
Eve (C, 55000)
Bob (D, 60000)
```
其中,客户按照职级从高到低排序,A职级最高,D职级最低;在同一职级内,按照工资从高到低排序。