How can I easily convert an Iterable to a List in Java?

The first approach works well, but if you want something more functional and optimized for large datasets, StreamSupport is a great option:

import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

public static <T> List<T> convertIterableToList(Iterable<T> iterable) {
    return StreamSupport.stream(iterable.spliterator(), false)
                        .collect(Collectors.toList());
}

Why use this?

The spliterator() method efficiently turns the Iterable into a Stream, and collect(Collectors.toList()) does the rest.

This is a great approach, especially if parallel processing is a potential need—just replace false with true in stream(iterable.spliterator(), false).