У меня есть Collection
элементов произвольного класса. Я хочу выполнить итерацию по коллекции и выполнить некоторую операцию, используя элемент и каждый другой элемент коллекции один за другим (исключая сам элемент). Пусть для простоты List<Integer>
:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
С петлями for
это будет:
for (Integer i : list) {
for (Integer j : list) {
if (!i.equals(j)) System.out.println(i * 2 + j); //just for example
}
}
Вопрос как это сделать с Stream API?
То, к чему я пришел:
list.stream().forEach(i ->
list.stream().forEach(j -> {
if (!i.equals(j)) System.out.println(i * 2 + j);
})
);
Это не выглядит лучше, чем вложенный цикл. Есть ли более элегантный способ?