我有以下课程:
public class Item {
int id;
String name;
// few other fields, contructor, getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我有一个项目清单.我想迭代列表并找到具有特定id的实例.我正试图通过溪流来做.
public void foobar() {
List<Item> items = getItemList();
List<Integer> ids = getIdsToLookup();
int id, i = ids.size() - 1;
while (i >= 0) {
id = ids.get(i);
Optional<Item> item = items
.stream()
.filter(a -> a.getId() == id)
.findFirst();
// do stuff
i--;
}
}
Run Code Online (Sandbox Code Playgroud)
这是迭代列表并获得我需要的元素的最佳方法吗?另外,我在id的过滤行上得到一个错误,它表示lambda表达式中使用的变量必须是final或者有效的final.也许我可以在while循环中定义id,这应该摆脱异常.谢谢.