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