Ho uno Collection
di elementi di una classe arbitraria. Voglio scorrere la collezione ed eseguire alcune operazioni utilizzando l'elemento e ogni altro elemento della raccolta uno per uno (escludendo l'elemento stesso). Lascia che sia List<Integer>
per semplicità:Java 8 stream: elaborare ogni coppia possibile di elementi dall'elenco
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Con for
spire magnetiche sarà:
for (Integer i : list) {
for (Integer j : list) {
if (!i.equals(j)) System.out.println(i * 2 + j); //just for example
}
}
la domanda è come farlo con il Stream API?
Questo è quello che sono venuto a:
list.stream().forEach(i ->
list.stream().forEach(j -> {
if (!i.equals(j)) System.out.println(i * 2 + j);
})
);
non sembra meglio di ciclo nidificato però. C'è un modo più elegante?