@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));
                    ^
  • Вопрос задан
  • 1441 просмотр
Решения вопроса 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, должна принимать два аргумента.

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

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

Похожие вопросы