Как я могу избежать внутреннего l oop и написать это «распределение» только с функциями потока? Редактировать: Я хочу список всех уникальных пар, соединенных вместе, сохраненных в l2
. Пример: ввод: String[] l = { "a", "a", "b", "c", "d", "d", "d", "d", "a", "a", "b", "b", "c", "d" };
, вывод: [a, a, b, c, d, d, b, b, c, d]
.
String[] l = { "a", "a", "b", "c", "d", "d", "d", "d", "a", "a" };
String[] l2 =
IntStream.iterate(0, i -> i < l.length, i -> i + 2)
.mapToObj(i -> Objects.hash(l[i], l[i + 1]))
.distinct()
.map(h -> {
for (int j = 0; j < l.length; j += 2) {
if (h == Objects.hash(l[j], l[j + 1])) {
return new String[] { l[j], l[j + 1] };
}
}
return null;
})
.flatMap(Arrays::stream)
.toArray(String[]::new);
System.out.println(Arrays.toString(l2));