Java, эквивалент LINQ Select, Stream API

309
18 февраля 2017, 05:29

Имеется List объектов класса Person

public class Person {
    String name1;
    String name2;
    String name3;
    String birthdate;
    String address;
}

Как из этого List получить другой, но с некоторыми полями, к примеру, name1, name2 и address... Желательно, используя Stream API.

Answer 1

Можно сделать так:

List<String> fields = persons.stream()
        .flatMap(p -> Stream.of(p.name1, p.name2, p.address))
        .collect(Collectors.toList());

В этом случае и на выходе список будет, и тип у него будет String, а не Object.

Answer 2

Решил вопрос следующим образом:

Object[] o = persons.stream()
                 .map(r -> Arrays.asList(r.getName1(), r.getName2(),r.getAddress()))
                 .toArray();

Быть может, есть решение получше ?

READ ALSO
Перенос проекта на dagger2

Перенос проекта на dagger2

Такой вопрос, в проекте я использую метод для проверки работы сервиса,я вынес его в отдельный класс с аннотацией @Module:

360
Java chat app video streaming

Java chat app video streaming

Всем привет! У меня есть мини Джава чат с клиентом и серверомДело в том что я хочу добавить туда видео стриминг(вебинар) и аудио а сам понятия...

282
Делится ли число введенное с клавиатуры на его составляющие цифры [требует правки]

Делится ли число введенное с клавиатуры на его составляющие цифры [требует правки]

Делится ли число введенное с клавиатуры на его составляющие цифры?

296
Проблема с bootstrap tab + ajax

Проблема с bootstrap tab + ajax

Здравствуйте

357