Предположим, что у нас есть список следующим образом. CoreResult имеет поле типа List<Double>.
final List<CoreResult> list = new LinkedList<>(SOME_DATA);
Цель состоит в том, чтобы сгладить список после извлечения этого конкретного поля из каждого объекта CoreResult.
Вот три возможных варианта. Кто-нибудь из них предпочтительнее других?
Вариант 1: извлеките поле через map() и сгладьте внутри коллектора
final List<Double> A = list.stream().map(CoreResult::getField)
.collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);
Вариант 2: извлечение поля через map(), сглаживание через flatMap(), простой сборщик
final List<Double> B = list.stream().map(CoreResult::getField)
.flatMap(Collection::stream).collect(Collectors.toList());
Вариант 3: извлечение поля и сглаживание за один раз через flatMap(), простой сборщик
final List<Double> C = list.stream().flatMap(
x -> x.getField().stream()).collect(Collectors.toList());
Будет ли ответ другим, если нет необходимости извлекать какое-либо поле из CoreResult, и вместо этого нужно просто сгладить List<List<Double>>?