这可能是因为在方法体中对集合进行了两次lambda重新赋值,而在第一次重新赋值后,集合已经为空,但是第二次重新赋值的代码仍然会被执行。

在Java中,lambda表达式可以用于对集合进行操作,比如筛选、映射等。当对集合进行lambda重新赋值时,实际上是对集合中的每个元素进行操作,然后将结果保存到一个新的集合中。

如果在第一次重新赋值后,集合为空,那么第二次重新赋值的代码也会执行,但是由于集合为空,lambda表达式中的操作无法进行,所以会一直在方法体中重复执行。

为了解决这个问题,可以在方法体中添加对集合是否为空的判断,如果集合为空,则直接返回或者进行其他处理。例如:

List<Integer> list = new ArrayList<>();
// 对集合进行第一次lambda重新赋值
list = list.stream().map(i -> i * 2).collect(Collectors.toList());

// 判断集合是否为空
if(list.isEmpty()){
    return;
}

// 对集合进行第二次lambda重新赋值
list = list.stream().filter(i -> i > 10).collect(Collectors.toList());

这样就可以避免在集合为空时重复执行方法体中的代码

java为什么对集合进行两次lamda重新赋值list为空时会一直在方法体中重复进行

原文地址: https://www.cveoy.top/t/topic/h648 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录