在jdk1.8以后,我们可以使用stream.filter过滤list中的数据,主要作用就是模拟sql查询,从集合中查询想要的数据,不用像之前一样遍历list再筛选。
实例:
public class Test {
public static void main(String[] args) {
List<Program> list = new ArrayList<Program>();
Program p1 = new Program();
p1.setId(1);
p1.setName("项目1");
p1.setStatus("0");
list.add(p1);
Program p2 = new Program();
p2.setId(2);
p2.setName("项目2");
p2.setStatus("0");
list.add(p2);
Program p3 = new Program();
p3.setId(3);
p3.setName("项目3");
p3.setStatus("1");
list.add(p3);
//从集合中查询状态为0的数据集合
List<Program> programList = list.stream().filter(program -> ("0").equals(program.getStatus())).collect(Collectors.toList());
//在集合中查询出第一个id为1的数据 返回数据类型为Optional
Optional<Program> programList1 = list.stream().filter(program -> program.getId()==1).findFirst();
//查询的数据不存在,返回值为option.empty
Optional<Program> programList2 = list.stream().filter(program -> program.getId()==4).findFirst();
System.out.println(programList);
System.out.println(programList1);
System.out.println(programList2);
}
}
结果:
[Program(id=1, name=项目1, description=null, totalSize=0.0, version=0, createdAt=null, updatedAt=null, status=0, orgId=0, programSourceList=null), Program(id=2, name=项目2, description=null, totalSize=0.0, version=0, createdAt=null, updatedAt=null, status=0, orgId=0, programSourceList=null)]
Optional[Program(id=1, name=项目1, description=null, totalSize=0.0, version=0, createdAt=null, updatedAt=null, status=0, orgId=0, programSourceList=null)]
Optional.empty