郭胆子的一手代码。
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestStream {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("a",1));
users.add(new User("b",2));
users.add(new User("c",3));
users.add(new User("d",8));
// users.stream().map(user -> user.name+""+ user.name).filter(s -> s.contains("aa")).collect(Collectors.toList()).forEach(s -> System.out.println(s));
users.stream().filter(user -> user.sex>2).map(new Function<User, Person>() {
@Override
public Person apply(User user) {
Person person = new Person();
person.setpName(user.name);
person.setpSex(user.sex);
System.out.println("===========");
return person;
}
}).collect(Collectors.toList()).forEach(s-> System.out.println("==="+s.toString()));
System.out.println("=====================================================================================");
System.out.println("=====================================================================================");
users.stream().filter(TestStream::comp).flatMap((Function<User, Stream<?>>) user -> {
Person person = new Person();
person.setpName(user.name);
person.setpSex(user.sex);
System.out.println("===========");
return Stream.of(person);
}).collect(Collectors.toList()).forEach(s-> System.out.println("==="+s.toString()));
}
private static boolean comp(User user){
return user.sex>2;
}
private static class User{
private String name;
private int sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
private User(String name, int sex){
this.name=name;
this.sex=sex;
}
}
private static class Person{
private String pName;
private int pSex;
// private Person(String pName,int pSex){
// this.pName=pName;
// this.pSex=pSex;
// }
@Override
public String toString() {
return "Person{" +
"pName='" + pName + '\'' +
", pSex=" + pSex +
'}';
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public int getpSex() {
return pSex;
}
public void setpSex(int pSex) {
this.pSex = pSex;
}
}
}
执行结果
"C:\Program Files\Java\jdk1.8.0_251\bin\java.exe" "-javaagent:E:\idea\idea_install_2\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar=51025:E:\idea\idea_install_2\IntelliJ IDEA 2019.3.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_251\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_251\jre\lib\rt.jar;E:\Java\HelloGyw\out\production\HelloGyw" TestStream
===========
===========
===Person{pName='c', pSex=3}
===Person{pName='d', pSex=8}
=====================================================================================
=====================================================================================
===========
===========
===Person{pName='c', pSex=3}
===Person{pName='d', pSex=8}
Process finished with exit code 0