Конкатенация ImmutableSet с использованием Guava - PullRequest
1 голос
/ 09 июля 2019

Я привык к C #, где у нас IEnumerable<T>.SelectMany, но обнаружил, что играю в какой-то Java-код, используя библиотеку Google Guava.Есть ли в Guava эквивалент SelectMany?

Пример: если у меня есть конструкция потока / карты, подобная этой

collections
            .stream()
            .map(collection -> loadKeys(collection.getTenant(), collection.getGroup()))
            .collect(GuavaCollectors.immutableSet());

, где loadKeys возвращает что-то вроде ImmutableSet<String>, эта функция будетreturn ImmutableSet<ImmutableSet<String>> но я хочу просто объединить их в один ImmutableSet<String>

Какой лучший способ сделать это?

1 Ответ

3 голосов
/ 09 июля 2019

Вы можете использовать Stream::flatMap метод:

collections
        .stream()
        .flatMap(collection -> loadKeys(collection.getTenant(), collection.getGroup()).stream())
        .collect(ImmutableSet.toImmutableSet());

Обратите внимание, что вы получаете stream из loadKeys результата метода. Результатом этого должно быть ImmutableSet<String> при условии, что loadKeys возвращает Set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...