java集合按照字段为工作状态为true的排在前面并按照字段姓名排序
要实现这样的排序,可以使用Comparator接口来定义排序规则,然后使用Collections.sort()方法进行排序。
假设有一个名为Person的类,有两个字段:name和isWorking,可以按照以下方式定义排序规则:
import java.util.Comparator;
public class Person {
private String name;
private boolean isWorking;
// 构造方法和其他方法省略
// Getter和Setter方法省略
// 定义排序规则的Comparator
public static Comparator<Person> personComparator = new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
// 首先按照isWorking字段进行排序,true排在前面
if (p1.isWorking() && !p2.isWorking()) {
return -1;
} else if (!p1.isWorking() && p2.isWorking()) {
return 1;
} else {
// 如果isWorking字段相同,再按照姓名进行排序
return p1.getName().compareTo(p2.getName());
}
}
};
}
然后,可以使用Collections.sort()方法对集合进行排序,例如:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
// 添加Person对象到集合中
// 对集合进行排序
Collections.sort(personList, Person.personComparator);
// 输出排序结果
for (Person person : personList) {
System.out.println(person.getName() + " - " + person.isWorking());
}
}
}
这样,集合中按照工作状态为true的对象排在前面,并且在工作状态相同的情况下按照姓名进行排序
原文地址: https://www.cveoy.top/t/topic/ibb5 著作权归作者所有。请勿转载和采集!