private boolean checkInt(int i,HashMap<Integer, String> reason){
if (i > 3) {
return true;
}
reason.put(i,"不大于3");
return false;
}
@Test
public void testFilter(){
List<Integer> list = Arrays.asList(1, 3, 4, 5);
HashMap<Integer, String> reasonMap = new HashMap<>();
List<Integer> collect = list.stream().filter(integer -> checkInt(integer,reasonMap)).collect(Collectors.toList());
System.out.println(collect);
System.out.println(reasonMap);
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwADOzMDNyETM4ADNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
我想实现导入Excel时或者批量提交一批数据时,使用stream的filter过滤数据后,把过滤失败的值和过滤失败的原因保存到数据库,把成功的值提交到下一个步骤。
上述demo中的collection就是已过滤后的数据,reasonMap就是被过滤丢弃的数据和丢弃原因
原来的实现方法是在for循环里,一个一个条件做判断,代码杂乱不易维护