- Почему Collectors.toList () в этом случае возвращает ArrayList, реализующий интерфейс List?
Поскольку определение метода предполагает, что он возвращает реализацию Collector с коллекторомпоставщик как ArrayList
. Следовательно, из определения метода ниже очень ясно, что Collectors.toList
всегда возвращает сборщик ArrayList (While it's arguable why toList not toArrayList word is used in method name
).
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);
}
Что означает левая панель <R, A> R collect(Collector<? super T, A, R> collector)
Если вы обращаетесь к комментариям к документации, в ней точно упоминаются следующие общие типы:
/*
@param <R> the type of the result
@param <A> the intermediate accumulation type of the {@code Collector}
@param collector the {@code Collector} describing the reduction
@return the result of the reduction
*/
<R, A> R collect(Collector<? super T, A, R> collector);