java list 多条件排序_java8 List多条件排序

packagecom.zhangpengfei.demo;importorg.assertj.core.util.Lists;import java.util.*;import java.util.function.*;importjava.util.stream.Collectors;/*** ClassName:

* date: 2020/9/15 10:24

*

*@authorzhangpengfei

*@sinceJDK 1.8*/

public classTest {public static voidmain(String[] args) {

Student s1= newStudent();

s1.setNo(1);

s1.setName("张三");

s1.setAge(18);

s1.setAddress("北京");

Student s2= newStudent();

s2.setNo(2);

s2.setName("李四");

s2.setAge(14);

s2.setAddress("上海");

Student s3= newStudent();

s3.setNo(4);

s3.setName("王五");

s3.setAge(17);

s3.setAddress("深圳");

Student s4= newStudent();

s4.setNo(3);

s4.setName("赵六");

s4.setAge(17);

s4.setAddress("广州");

List list = new ArrayList<>();

list.add(s1);

list.add(s2);

list.add(s3);

list.add(s4);

List collect1 =list.stream()

.sorted(Comparator.comparing(Student::getAge).thenComparing(Student::getNo))

.collect(Collectors.toList());

System.out.println("正序:" +collect1);

System.out.println("============================");

List collect2 =list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

System.out.println("倒序:" +collect2);

System.out.println("============================");

}

}classStudent {private intNo;privateString name;private intage;privateString address;public intgetNo() {returnNo;

}public void setNo(intno) {

No=no;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}publicString getAddress() {returnaddress;

}public voidsetAddress(String address) {this.address =address;

}

@OverridepublicString toString() {return "Student{" +

"No=" + No +

", name='" + name + '\'' +

", age=" + age +

", address='" + address + '\'' +

'}';

}

}

输出结果:

D:\Java\jdk1.8.0_172\bin\java.exe -javaagent:E:\IDEA\lib\idea_rt.jar=54551:E:\IDEA\bin -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_172\jre\lib\charsets.jar;D:\Java\jdk1.8.0_172\jre\lib\deploy.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\access-bridge-32.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_172\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_172\jre\lib\javaws.jar;D:\Java\jdk1.8.0_172\jre\lib\jce.jar;D:\Java\jdk1.8.0_172\jre\lib\jfr.jar;D:\Java\jdk1.8.0_172\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_172\jre\lib\jsse.jar;D:\Java\jdk1.8.0_172\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_172\jre\lib\plugin.jar;D:\Java\jdk1.8.0_172\jre\lib\resources.jar;D:\Java\jdk1.8.0_172\jre\lib\rt.jar;D:\IdeaProjects\zhangpengfei\target\classes;D:\MavenRepository\org\springframework\boot\spring-boot-starter\2.3.3.RELEASE\spring-boot-starter-2.3.3.RELEASE.jar;D:\MavenRepository\org\springframework\boot\spring-boot\2.3.3.RELEASE\spring-boot-2.3.3.RELEASE.jar;D:\MavenRepository\org\springframework\spring-context\5.2.8.RELEASE\spring-context-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\boot\spring-boot-autoconfigure\2.3.3.RELEASE\spring-boot-autoconfigure-2.3.3.RELEASE.jar;D:\MavenRepository\org\springframework\boot\spring-boot-starter-logging\2.3.3.RELEASE\spring-boot-starter-logging-2.3.3.RELEASE.jar;D:\MavenRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\MavenRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\MavenRepository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\MavenRepository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\MavenRepository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\MavenRepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\MavenRepository\org\springframework\spring-core\5.2.8.RELEASE\spring-core-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\spring-jcl\5.2.8.RELEASE\spring-jcl-5.2.8.RELEASE.jar;D:\MavenRepository\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;D:\MavenRepository\org\springframework\boot\spring-boot-starter-web\2.3.3.RELEASE\spring-boot-starter-web-2.3.3.RELEASE.jar;D:\MavenRepository\org\springframework\boot\spring-boot-starter-json\2.3.3.RELEASE\spring-boot-starter-json-2.3.3.RELEASE.jar;D:\MavenRepository\com\fasterxml\jackson\core\jackson-databind\2.11.2\jackson-databind-2.11.2.jar;D:\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.2\jackson-datatype-jdk8-2.11.2.jar;D:\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.2\jackson-datatype-jsr310-2.11.2.jar;D:\MavenRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.2\jackson-module-parameter-names-2.11.2.jar;D:\MavenRepository\org\springframework\boot\spring-boot-starter-tomcat\2.3.3.RELEASE\spring-boot-starter-tomcat-2.3.3.RELEASE.jar;D:\MavenRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.37\tomcat-embed-core-9.0.37.jar;D:\MavenRepository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\MavenRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.37\tomcat-embed-websocket-9.0.37.jar;D:\MavenRepository\org\springframework\spring-web\5.2.8.RELEASE\spring-web-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\spring-beans\5.2.8.RELEASE\spring-beans-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\spring-webmvc\5.2.8.RELEASE\spring-webmvc-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\spring-aop\5.2.8.RELEASE\spring-aop-5.2.8.RELEASE.jar;D:\MavenRepository\org\springframework\spring-expression\5.2.8.RELEASE\spring-expression-5.2.8.RELEASE.jar;D:\MavenRepository\org\assertj\assertj-core\3.16.1\assertj-core-3.16.1.jar;D:\MavenRepository\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;D:\MavenRepository\com\netflix\ribbon\ribbon-httpclient\2.2.0\ribbon-httpclient-2.2.0.jar;D:\MavenRepository\com\netflix\ribbon\ribbon-core\2.2.0\ribbon-core-2.2.0.jar;D:\MavenRepository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\MavenRepository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\MavenRepository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\MavenRepository\com\netflix\ribbon\ribbon-loadbalancer\2.2.0\ribbon-loadbalancer-2.2.0.jar;D:\MavenRepository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;D:\MavenRepository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\MavenRepository\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\MavenRepository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\MavenRepository\commons-codec\commons-codec\1.14\commons-codec-1.14.jar;D:\MavenRepository\com\google\code\findbugs\annotations\2.0.0\annotations-2.0.0.jar;D:\MavenRepository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;D:\MavenRepository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;D:\MavenRepository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;D:\MavenRepository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;D:\MavenRepository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\MavenRepository\com\netflix\servo\servo-core\0.10.1\servo-core-0.10.1.jar;D:\MavenRepository\com\netflix\servo\servo-internal\0.10.1\servo-internal-0.10.1.jar;D:\MavenRepository\com\google\guava\guava\16.0.1\guava-16.0.1.jar;D:\MavenRepository\com\netflix\archaius\archaius-core\0.7.4\archaius-core-0.7.4.jar;D:\MavenRepository\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;D:\MavenRepository\com\fasterxml\jackson\core\jackson-annotations\2.11.2\jackson-annotations-2.11.2.jar;D:\MavenRepository\com\fasterxml\jackson\core\jackson-core\2.11.2\jackson-core-2.11.2.jar;D:\MavenRepository\com\netflix\netflix-commons\netflix-commons-util\0.1.1\netflix-commons-util-0.1.1.jar;D:\MavenRepository\com\netflix\hystrix\hystrix-core\1.5.12\hystrix-core-1.5.12.jar;D:\MavenRepository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\MavenRepository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar com.zhangpengfei.demo.bokeyuan.BoKeYuan

[Student{No=2, name='李四', age=14, address='上海'}, Student{No=3, name='赵六', age=17, address='广州'}, Student{No=4, name='王五', age=17, address='深圳'}, Student{No=1, name='张三', age=18, address='北京'}]============================[Student{No=1, name='张三', age=18, address='北京'}, Student{No=4, name='王五', age=17, address='深圳'}, Student{No=3, name='赵六', age=17, address='广州'}, Student{No=2, name='李四', age=14, address='上海'}]============================Process finished with exit code0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值