Если вы настаиваете на этом, это бы сработало:
List<Category> categories = getCategories();
categories.forEach(category -> {
List<Item> items = category.getItems();
IntStream.range(0, items.size()).forEach(i -> {
Item item = items.get(i);
if (i == 0)
operation1(item);
operation2(item);
}
);
});
Однако для общей читабельности я бы настоятельно рекомендовал просто получить первый элемент (если имеется) и выполнить на нем вашу операцию1,и затем перебираем все остальное (будь то поток или нет).
Тем не менее, если бы вы на самом деле не имели списков для начала, но имели бы действительно потоковый и неблокирующий код, есть что сказатьподход.По этой же причине я не добавил .stream()
до .forEach
над категориями, вы начинаете со списка, с которого начинаете.