Java list中实体类的按照某个字段大小排序
在Java中,可以使用Collections.sort()方法结合自定义的比较器来对List中的实体类按照某个字段进行排序。以下是一个示例代码,演示了如何根据实体类中的age字段对List进行排序:
go
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
// getters and setters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class SortExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));
// 根据年龄排序
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return Integer.compare(o1.getAge(), o2.getAge());
}
});
// 打印排序结果
for (Person p : people) {
System.out.println(p.getName() + ": " + p.getAge());
}
}
}
在这个例子中,我们定义了一个Person类,并创建了一个包含三个Person对象的List。使用Collections.sort()方法和一个匿名内部类来实现Comparator接口,以便根据age字段对List进行排序。结果将按年龄升序排列。如果你需要按降序排序,可以使用Integer.compare(o2.getAge(), o1.getAge())。
例子
go
@GetMapping("/selectJobNumByMoth")
@Anonymous
public AjaxResult selectJobNumByMoth(){
//ArrayList<PlatMonthNumDto> list = new ArrayList<>();
//后台查出来的月份数据
List<PlatMonthNumDto> platMonthNumDtos = platEmploymentJobService.selectJobNumByMoth();
for (int i = 1; i < 13; i++) {
String str = String.valueOf(i);
//判断12个月份是否有数据,如果没有,则添加上
boolean b1 = platMonthNumDtos.stream()
.map(PlatMonthNumDto::getMonth)
.anyMatch(a -> a.toString().contains(str));
if (!b1){
PlatMonthNumDto platMonthNumDtoAdd = new PlatMonthNumDto();
platMonthNumDtoAdd.setMonth(i);
platMonthNumDtoAdd.setDataCount(0);
platMonthNumDtos.add(platMonthNumDtoAdd);
}
}
//按照 某个字段进行排序
Collections.sort(platMonthNumDtos, new Comparator<PlatMonthNumDto>() {
@Override
public int compare(PlatMonthNumDto o1, PlatMonthNumDto o2) {
return Integer.compare(o1.getMonth(), o2.getMonth());
}
});
return AjaxResult.success(platMonthNumDtos);
}