小编Gen*_*han的帖子

Java 8 Stream在列表中查找元素

我有以下课程:

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,这应该摆脱异常.谢谢.

java lambda java-8 java-stream

9
推荐指数
2
解决办法
5万
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1