List.of(..)
- это статическая фабрика, возвращающая сам List
, нет необходимости заключать его в конструктор ArrayList::new
.
Вот код, который вам, вероятно, нужен, однако не стоит недооценивать силу для for-loop
:
// Here you need to get the max of all the List sizes to traverse all Lists
int maxSize = Math.max(list1.size(), Math.max(list2.size(), list3.size()));
IntStream.range(0, maxSize) // Iterate 0 .. minSize-1
.mapToObj(i -> Stream.of(list1, list2, list3) // Map each index
.filter(list -> i < list.size()) // Secure the existing index
.map(list -> list.get(i)) // Get the item
.collect(Collectors.toList())) // Collect to List
.forEach(System.out::println); // And iterate (print)
Выход:
[1, 30, 30]
[1.5, 25, 25]
В случае переменного размера списка итерация обхода безопасна, потому что я касаюсь только существующих индексов.