Stream流代替For循环进行输出可以使代码更简洁。
需求:根据姓名获取员工信息
1.建立实体类:Emp
public class Emp {
private String id;
private String name;
public Emp(String id, String name) {
this.id=id;
this.name=name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Emp信息: [id=" + id + ", name=" + name + "]";
}
2.测试类:
(1.)原始For写法:
List<Emp> emps = new ArrayList<>();
emps.add(new Emp("00101","张三"));
emps.add(new Emp("00102","张四"));
emps.add(new Emp("00103","张五"));
emps.add(new Emp("00104","张六"));
emps.add(new Emp("00105","张七"));
for (Emp emp : emps) {
if (emp.getName().equals("张三")) {
System.out.println(emp);
return;
}
}
(2.)Stream流:
List<Emp> emps = new ArrayList<>();
emps.add(new Emp("00101","张三"));
emps.add(new Emp("00102","张四"));
emps.add(new Emp("00103","张五"));
emps.add(new Emp("00104","张六"));
emps.add(new Emp("00105","张七"));
//filter()定义方法,toList()输出为list
List<Emp> emp=emps.stream().filter(e -> "张三".equals(e.getName())).collect(Collectors.toList());
emp.forEach(System.out::println);
输出结果为: