У меня есть следующий класс:
public class Item {
int id;
String name;
// few other fields, contructor, getters and setters
}
У меня есть список предметов. Я хочу перебрать список и найти экземпляр, который имеет определенный идентификатор. Я пытаюсь сделать это через потоки.
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--;
}
}
Это лучший способ перебрать список и получить нужный мне элемент? Кроме того, я получаю сообщение об ошибке в строке фильтра для идентификатора, в котором говорится, что переменные, используемые в лямбда-выражениях, должны быть окончательными или эффективно окончательными. Может быть, я могу определить идентификатор внутри цикла while, это должно избавить от исключения. Благодаря.