要实现这样的排序,可以使用Comparator接口来定义排序规则,然后使用Collections.sort()方法进行排序。

假设有一个名为Person的类,有两个字段:nameisWorking,可以按照以下方式定义排序规则:

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的对象排在前面,并且在工作状态相同的情况下按照姓名进行排序

java集合按照字段为工作状态为true的排在前面并按照字段姓名排序

原文地址: https://www.cveoy.top/t/topic/ibb5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录