首先有一个实体类
@Data
@TableName("user")
public class UserInfo extends Model<UserInfo> {
/**
* 主键Id
*/
private int id;
/**
* 名称
*/
private String name;
/**
* 年龄
*/
private int age;
}
然后新建一个main方法测试,根据age倒叙排列,如果age相等则根据name排序
使用关键词sort,comparing,thenComparing
public class TestSort {
public static void main(String[] args) {
List<UserInfo> list = new ArrayList<>();
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setAge(34);
userInfo.setName("yiyi");
UserInfo userInfo1 = new UserInfo();
userInfo1.setId(2);
userInfo1.setAge(3);
userInfo1.setName("erer");
UserInfo userInfo2 = new UserInfo();
userInfo2.setAge(14);
userInfo2.setName("san");
UserInfo userInfo3 = new UserInfo();
userInfo3.setId(3);
userInfo3.setAge(14);
userInfo3.setName("wuw");
list.add(userInfo);
list.add(userInfo1);
list.add(userInfo2);
list.add(userInfo3);
//根据age从大到小排列,如果有相同的age,则按照姓名倒叙排列
List<UserInfo> sortList = list.stream().sorted(
Comparator.comparing(UserInfo::getAge).thenComparing(UserInfo::getName).reversed()
).collect(Collectors.toList());
System.out.println("原来的集合: "+list);
System.out.println("倒叙排列: " + sortList);
}
}
得到的结果如下
原来的集合: [UserInfo(id=1, name=yiyi, age=34), UserInfo(id=2, name=erer, age=3), UserInfo(id=0, name=san, age=14), UserInfo(id=3, name=wuw, age=14)]
倒叙排列: [UserInfo(id=1, name=yiyi, age=34), UserInfo(id=3, name=wuw, age=14), UserInfo(id=0, name=san, age=14), UserInfo(id=2, name=erer, age=3)]
最后获取年纪最大的人的信息,使用limit关键字
List<UserInfo> collect = sortList.stream().limit(1).collect(Collectors.toList());
System.out.println("年纪最大的人"+collect);
得到结果
年纪最大的人[UserInfo(id=1, name=yiyi, age=34)]
至此,介绍完毕,还是蛮好用的。

本文介绍了如何使用Java8的集合API进行数据排序,包括根据年龄(age)倒序排列,若年龄相同则按姓名(name)升序排序。通过`sort`, `comparing`, `thenComparing`方法实现排序,并利用`limit`获取年龄最大的前N个元素。实操过程简洁高效。"
127802295,10960617,WPF图形绘制:详解Path几何线段,"['WPF', '图形绘制', '贝塞尔曲线']
1万+

被折叠的 条评论
为什么被折叠?



