要根据泛型的某个字段排序并取排序前1/9的数据,可以按照以下步骤进行:

  1. 创建一个实现了Comparator接口的类,用于比较泛型对象的某个字段。例如,如果泛型对象是一个Person类,要根据年龄字段排序,可以创建一个AgeComparator类实现Comparator<Person>接口,并重写compare方法进行比较。
class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
}
  1. 创建一个List对象,并添加要排序的泛型数据。
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 20));
// 添加更多Person对象...
  1. 使用Collections.sort方法根据指定的比较器对列表进行排序。
Collections.sort(personList, new AgeComparator());
  1. 使用subList方法获取排序前1/9的数据。
int endIndex = Math.min(personList.size() / 9, personList.size());
List<Person> topOneNinth = personList.subList(0, endIndex);

完整示例代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
}

public class Main {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 30));
        personList.add(new Person("Charlie", 20));
        // 添加更多Person对象...

        Collections.sort(personList, new AgeComparator());

        int endIndex = Math.min(personList.size() / 9, personList.size());
        List<Person> topOneNinth = personList.subList(0, endIndex);

        // 输出排序前1/9的数据
        for (Person person : topOneNinth) {
            System.out.println(person.getName() + ": " + person.getAge());
        }
    }
}

以上代码将根据Person对象的年龄字段进行排序,然后获取排序前1/9的数据,并打印输出。你可以根据实际需求修改字段和比较逻辑

java List 根据泛型的某字段排序 取排序前19的数据

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

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