@devpy14

Как сконвертировать Collection(map.values()) в обычный Set?

Есть Map:
{English=[Antony], Chemistry=[John], Music=[Antony]}
При использовании map.values() возвращает [[Antony], [John], [Antony]], нужно перевести это все дело в Set, избавившись от дубликатов. Я пришел только к след. варианту:
Set<String> uniqueStudents = new HashSet<>();
        for (List<String> listName: map.values()) {
            uniqueStudents.add(listName.get(0));
        }
        System.out.println(uniqueStudents); // [John, Antony]


Может, кто знает решение поизящней?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 2
BorLaze
@BorLaze
Java developer
Или вопрос странный, или одно из двух... чем простейшее решение-то не устраивает?
Set<String> uniqueStudents = new HashSet<>(map.values());


ЗЫ: не заметил, что значениями map являются массивы строк, а не строки. Тогда, действительно, надо так:
Set<String> set = map.values().stream()
                               .map(a -> a[0])
                               .collect(Collectors.toSet());
Ответ написан
Bavashi
@Bavashi Куратор тега Java
Set<String> uniqueStudents = new HashSet<>();
map.forEach((k, l)->l.forEach(v->uniqueStudents.add(v)));
System.out.println(uniqueStudents); // [John, Antony]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ОТП Банк Москва
от 240 000 до 270 000 ₽
Sportmaster Lab Санкт-Петербург
от 150 000 ₽
Эвотор Москва
от 180 000 до 250 000 ₽
27 янв. 2021, в 00:37
11111 руб./за проект
26 янв. 2021, в 23:30
3000 руб./за проект
26 янв. 2021, в 23:07
1000 руб./за проект