List<BaseNode> collect = getData().stream()
.filter(baseNode -> baseNode instanceof OrderDetail)
.collect(Collectors.toList());
Optional<BaseNode> node = collect.stream()
.filter(detail -> tools.getToolId().equals(((OrderDetail) detail).getToolId()))
.findFirst();
这两句代码是什么意思,OrderDetail和tools两个实体类,该两句话是作用在李哥二级列表里面,OrderDetail类是一级列表
第一句是在 BaseNode类型的集合里筛选出类型为OrderDetail的对象集合
第二句是在筛选后的数据里找出 toolId和已知对象tools的toolId相等的对象
找到OrderDetail列表中第一个toolId等于tools类toolId的对象
第一行:getData()返回一个BaseNode的集合,过滤符合条件(baseNode instanceof OrderDetail)得到新的集合collect.
第四行:返回collect集合内第一个符合条件(tools.getToolId().equals(((OrderDetail) detail).getToolId())的元素。