gpt4 book ai didi

java - SQL Lambda 将 for 循环变量添加到对象

转载 作者:行者123 更新时间:2023-11-30 06:12:35 29 4
gpt4 key购买 nike

我正在创建一个程序,该程序循环访问对象并根据达到的循环迭代更改 Team 变量,但出现“从 lambda 表达式引用的局部变量必须是最终或有效最终”错误。谁能提出解决方法吗?

 for(int i=1; i<11; i++){
ObjectList.stream()
.filter(Student -> Student.getRole().equals("Design"))
.filter(Student -> Student.getTeam() == 0)
.forEach(Student -> {
Student.setTeam(i);
System.out.println(Student);
});
}

最佳答案

这看起来非常浪费CPU。事实上,您正在为拥有团队 0 的每个设计学生设置一个唯一且递增的团队 ID。

对于您的问题,您始终可以复制“i”,如下所示:

final int teamId = i;

然后使用 setTeam(teamId)。

一个更简单的技巧(如果你真的无法编写 for 循环并且必须使用流......)将是

final int[] nextId = new int[]{1};
ObjectList.stream()
.filter(s -> "Design".equals(s.getRole()) && s.getTeam() == 0)
.forEach(s -> {
s.setTeam(nextId[0]++);
System.out.println(s);
});

关于java - SQL Lambda 将 for 循环变量添加到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909681/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com