java List 根据泛型的某字段排序 取排序前19的数据
要根据泛型的某个字段排序并取排序前1/9的数据,可以按照以下步骤进行:
- 创建一个实现了
Comparator接口的类,用于比较泛型对象的某个字段。例如,如果泛型对象是一个Person类,要根据年龄字段排序,可以创建一个AgeComparator类实现Comparator<Person>接口,并重写compare方法进行比较。
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
}
- 创建一个
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对象...
- 使用
Collections.sort方法根据指定的比较器对列表进行排序。
Collections.sort(personList, new AgeComparator());
- 使用
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的数据,并打印输出。你可以根据实际需求修改字段和比较逻辑
原文地址: https://www.cveoy.top/t/topic/icBE 著作权归作者所有。请勿转载和采集!