У меня есть следующий многократный цикл Java в старом стиле, который я хочу преобразовать в потоки Java 8:
List<Integer> list1 = Arrays.asList(1,2,3);
List<Integer> list2 = Arrays.asList(3,5,6);
List<Integer> list3 = Arrays.asList(3,4,9);
boolean match = true;
int list1Size = list1.size();
int list2Size = list2.size();
for (int i = 0; i < list1Size; i++ ) {
for (int j = 0; j < list2Size && i < list1Size; j++) {
if (list2.get(j).equals(list1.get(i))) {
if (list3.get(j).equals(list1.get(i))) {
System.out.println(list1.get(i));
}
}
}
}
(вывод: 3)
Лучший способ найтибыло:
IntStream.range(0, list1Size).forEach(
ix1 -> {
IntStream.range(0, list2.size()).forEach(
ix2 -> {
if (ix2 < list2.size() && ix1 < list1.size())
if (list2.get(ix2).equals(list1.get(ix1))) {
if (list3.get(ix2).equals(list1.get(ix1))) {
System.out.println(list1.get(ix1));
}
}
}
);
}
);
, что не кажется мне слишком привлекательным ...
Обратите внимание, что я работаю с 3 списками, используя 2 цикла.
Есть лилучший способ?
Спасибо