引入
用了一段时间的jdk8的新特性,lambda表达式、方法引用、stream流,用起来是真的顺手啊,最近碰到了一个排序的问题,引发了一些思考,然后就写了这篇博客,归纳总结sorted的用法,在做笔记的同时也让自己有更深的理解。
数据准备
1. 依赖
我喜欢用google的集合工具类,让我构造测试数据更简便。然后也用lombok,依赖:
<!--google集合工具类-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.0-jre</version>
</dependency>
<!--lombok,需要插件配合使用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
2. 相关类
User类
/*
*链式调用,我也有写相关博客,不过不是介绍基础用法的,是这个链式调用一个不太完美的地方,
*感兴趣的可以去看一看:https://blog.csdn.net/ql_7256/article/details/120274432
*/
@Data
@Accessors(chain = true)
public class User {
private String username;
private String password;
private Integer age;
private Integer height;
private Address address;
private Map others;
}
Address类,注意:这个类在后续的测试中要改动
@Data
@Accessors(chain = true)
public class Address {
private String province;
private String city;
private String county;
}
数据准备,
private List<User> users = new ArrayList<User>() {
{
add(new User().setUsername("张三").setPassword("123456").setAge(20).setHeight(170)
.setAddress(new Address().setProvince("四川省").setCity("成都市").setCounty("武侯区"))
.setOthers(ImmutableMap.builder().put("sorted","AAA").put("bbb","BBB").put("ccc","CCC").build()));
add(new User().setUsername("李四").setPassword("123456").setAge(16).setHeight(175)
.setAddress(new Address().setProvince("四川省").setCity("成都市").setCounty("锦江区"))
.setOthers(ImmutableMap.builder().put("sorted","DDD").put("eee","EEE").put("fff","FFF").build()));
add(new User().setUsername("王五").setPassword("123456").setAge(20).setHeight(180)
.setAddress(new Address().setProvince("四川省").setCity("成都市").setCounty("青羊区"))
.setOthers(ImmutableMap.builder().put("sorted