Java 8 предоставляет возможность использования потоков, и вы можете получить список из Set<String> setString
в виде:
List<String> stringList = setString.stream().collect(Collectors.toList());
Хотя внутренняя реализация на данный момент предоставляет экземпляр ArrayList
:
public static <T>
Collector<T, ?, List<T>> toList() {
return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add,
(left, right) -> { left.addAll(right); return left; },
CH_ID);
}
но JDK не гарантирует этого.Как уже упоминалось здесь :
Нет никаких гарантий относительно типа, изменчивости, сериализуемости или поточной безопасности возвращаемого списка;если требуется больший контроль над возвращенным списком, используйте toCollection (Supplier).
Если вы хотите быть уверенным всегда, тогда вы можете запросить экземпляр, например, как:
List<String> stringArrayList = setString.stream()
.collect(Collectors.toCollection(ArrayList::new));