Создание ArrayList с картой из другого ArrayList - PullRequest
0 голосов
/ 26 января 2019

У меня есть текущий ArrayList типа A, и я хочу создать новый список всех объектов в этом списке, который имеет тип B, где B является подклассом A. Есть ли способ сделать это, используяmap ()?

ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)

Это может выглядеть примерно так?

1 Ответ

0 голосов
/ 26 января 2019

Вы можете сделать это с помощью функции filter:

List<B> allBs = allAs.stream()
                     .filter(B.class::isInstance)  
                     .map(B.class::cast)
                     .collect(Collectors.toList());

, который отфильтрует все элементы, которые не соответствуют данному предикату, приведёт их к B объектам, а затем соберет их в новый List.

Также обратите внимание, что я изменил ArrayList<B> allBs на List<B> allBs, потому что рекомендуется программировать на интерфейс

...