帮我写段Java排序代码,有四个固定展位展示置业顾问,如果有金牌顾问,金牌顾问置顶,金牌顾问最多两位,其余位置轮询展示置业顾问
时间: 2024-05-03 11:22:16 浏览: 70
以下是一种可能的实现方式:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SalesConsultantSorter {
public static class SalesConsultant {
public String name;
public boolean isGold;
public SalesConsultant(String name, boolean isGold) {
this.name = name;
this.isGold = isGold;
}
public String toString() {
return name + (isGold ? " (Gold)" : "");
}
}
public static void main(String[] args) {
List<SalesConsultant> consultants = new ArrayList<>();
consultants.add(new SalesConsultant("Alice", false));
consultants.add(new SalesConsultant("Bob", true));
consultants.add(new SalesConsultant("Charlie", false));
consultants.add(new SalesConsultant("David", true));
consultants.add(new SalesConsultant("Eve", false));
consultants.add(new SalesConsultant("Frank", false));
sortSalesConsultants(consultants);
for (int i = 0; i < 4; i++) {
System.out.println(consultants.get(i));
}
}
public static void sortSalesConsultants(List<SalesConsultant> consultants) {
Collections.sort(consultants, new Comparator<SalesConsultant>() {
public int compare(SalesConsultant s1, SalesConsultant s2) {
if (s1.isGold && !s2.isGold) {
return -1;
} else if (!s1.isGold && s2.isGold) {
return 1;
} else {
return 0;
}
}
});
int goldCount = 0;
for (int i = 0; i < consultants.size(); i++) {
if (consultants.get(i).isGold) {
goldCount++;
if (goldCount > 2) {
Collections.swap(consultants, i, i - 1);
goldCount--;
}
}
}
}
}
```
这个代码首先定义了一个 `SalesConsultant` 类,表示置业顾问,其中包含姓名和是否为金牌顾问两个属性。然后定义了一个 `sortSalesConsultants` 方法,接收一个 `SalesConsultant` 列表,按照规则对其进行排序。排序规则是:金牌顾问排在前面,非金牌顾问排在后面;如果有超过两个金牌顾问,则将多余的金牌顾问移到最后一个非金牌顾问的位置上。最后,代码调用 `sortSalesConsultants` 方法并输出前四个置业顾问的信息。
阅读全文