List.of(..) is a static factory returning a List itself, there is no need to wrap it into a ArrayList::new constructor.
Here is the code you probably need, however, don't underestimate the power for a 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)
Output:
[1, 30, 30]
[1.5, 25, 25]
In case of variable list size, the traversal iteration is safe because I touch only the existing indices.
for comprehensionsare awesome. :)