@neverbethesameagain

Как вывести ключи в Java Map иным способом?

Есть коллекция
Map<String, String> map = new HashMap<>();
        map.put("Sim", "Sim");
        map.put("Tom", "Tom");
        
        for(String keys: map.keySet()){
            System.out.println(keys);
        }

Выводим ключи способом, который видно выше. Но есть способ для ключа и значения в виде:

map.forEach((k, v) -> System.out.println("Key: " + k + " Value: " + v));


Можно ли с его помощью вывести только k(ключ) или v(значение) ?? Ибо если попробовать так:
map.forEach((k) -> System.out.println(k));
то вылетает ошибка
error: incompatible types: incompatible parameter types in lambda expression
        map.forEach((k) -> System.out.println(k));
                    ^
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Вот что бывает, когда не понимаешь смысл кода, который копируешь.
(k, v) -> ...
это лямбда, синтаксический сахар для реализации функциональных интерфейсов(таких интерфейсов, в которых один абстрактный метод).


Map::foreach
как раз и принимает такой интерфейс
BiConsumer<? super K,? super V>
с
методом
void	accept(T t, U u)

Таким образом, имена k, v всего лишь параметры лямбды, они могут быть любыми. И лямбда, как реализация метода accept интерфейса BiConsumer, должна принимать два аргумента.

Ты можешь их не использовать, если они тебе не нужны.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
JTC Санкт-Петербург
от 150 000 до 200 000 ₽
Эвотор Москва
от 140 000 до 200 000 ₽
ServiceHUB Владимир
от 80 000 ₽