private ListgetListPerson() {
List strList = new ArrayList();for (int i = 0; i < 1000; i++) {
strList.add(new Person("aa" +i, i));
}returnstrList;
}/*** 有返回 的接口
* 将List -> List*/@Testpublic voidmapTest() {
Instant start=Instant.now();
List listPerson =getListPerson();//根据源码,第一个为参数类型,第二个为返回对象类型
Function mapper = p ->{//do something
try{
Thread.sleep(2);
}catch(Exception e) {
e.printStackTrace();
}
Student stu= newStudent(p.getName(), p.getAge());returnstu;
};
List rs =listPerson.parallelStream().map(mapper).collect(Collectors.toList());
System.out.println(rs.size());
Instant end=Instant.now();
System.out.println("耗时为:" +Duration.between(start, end).toMillis());
}/**普通写法,,当大量数据操作时,才能体现性能更高
* 也就是 do something 耗时比较长
*@throwsInterruptedException*/@Testpublic void change() throwsInterruptedException {
Instant start=Instant.now();
List listPerson =getListPerson();
List rs = new ArrayList<>(listPerson.size());for(Person person : listPerson) {//do something
Thread.sleep(2);
rs.add(newStudent(person.getName(), person.getAge()));
}
System.out.println(rs.size());
Instant end=Instant.now();
System.out.println("耗时为:" +Duration.between(start, end).toMillis());
}/*** 无需返回
* 将List 中的人名都加上 sir 串*/@Testpublic voidpeekTest() {
Instant start=Instant.now();
List listPerson =getListPerson();
Consumer action = p->{
p.setName(p.getName()+ "sir");
};
listPerson.parallelStream().peek(action).count();
System.out.println(listPerson);
Instant end=Instant.now();
System.out.println("耗时为:" +Duration.between(start, end).toMillis());
}public classPerson{privateString name;private intage;public Person(String name, intage) {this.name=name;this.age=age;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}
@OverridepublicString toString() {return this.name;
}
}public classStudent{privateString name;private intage;public Student(String name, intage) {this.name=name;this.age=age;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}
@OverridepublicString toString() {return this.name;
}
}