У меня есть Hashmap в Java, как это:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Тогда я заполняю это так:
team1.put("United", 5);
Как я могу получить ключи? Что-то вроде: team1.getKey()
вернуть «Юнайтед».
У меня есть Hashmap в Java, как это:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Тогда я заполняю это так:
team1.put("United", 5);
Как я могу получить ключи? Что-то вроде: team1.getKey()
вернуть «Юнайтед».
team1.getKey()
вернуть, если: (1) карта пуста или (2) если она содержит несколько ключей?int
следует использовать для одиноких, как это.Ответы:
A
HashMap
содержит более одного ключа. Вы можете использовать,keySet()
чтобы получить набор всех ключей.будет хранить
1
с ключом"foo"
и2
с ключом"bar"
. Чтобы перебрать все ключи:распечатает
"foo"
и"bar"
.источник
List<String> keys = new ArrayList<>(mLoginMap.keySet());
Это выполнимо, по крайней мере в теории, если вы знаете индекс:
keySet()
возвращает набор, поэтому вы конвертируете набор в массив.Проблема, конечно, в том, что набор не обещает сохранить ваш заказ. Если у вас есть только один элемент в вашей HashMap, вы хорошо, но если у вас есть больше, лучше перебрать карту, как это сделали другие ответы.
источник
HashMap
. Хорошее шоу.Проверь это.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Используйте,
java.util.Objects.equals
потому что HashMap может содержатьnull
)Использование JDK8 +
Более "универсальный" и максимально безопасный
Или если вы на JDK7.
источник
HashMap
ключи уникальны.Вы можете получить все
Map
ключи, используя методkeySet()
. Теперь, если вам нужно получить ключ с учетом его значения , это совершенно другой вопрос, иMap
он вам там не поможет; вам потребуется специальная структура данных, напримерBidiMap
(карта, которая позволяет осуществлять двунаправленный поиск между ключом и значениями) из коллекций Apache Commons Collections, - также следует помнить, что несколько разных ключей могут быть сопоставлены одному и тому же значению.источник
Поскольку вы хотели бы получить аргумент (
United
), для которого задано значение (5
), вы также можете рассмотреть возможность использования двунаправленной карты (например, предоставленной Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).источник
Если вам просто нужно что-то простое и больше проверки.
Тогда вы можете искать любой ключ.
источник
источник
next()
дважды в цикле означает, что вы распечатаете нечетные ключи вместе с четными значениями.Используйте функциональную операцию для более быстрой итерации.
team1.keySet().forEach((key) -> { System.out.println(key); });
источник
Решением может быть, если вы знаете позицию ключа, преобразовать ключи в массив String и вернуть значение в позиции:
источник
Попробуйте эту простую программу:
источник
источник
Чтобы получить ключи в HashMap, у нас есть метод keySet (), который присутствует в
java.util.Hashmap
пакете. пример:Теперь ключи будут иметь все ваши ключи доступны на карте. например: [ключ1, ключ2]
источник
java,util.HashMap
это класс, а не пакет, и здесь нет ничего, чего не было бы пять лет назад.То, что я сделаю, что очень просто, но тратит память, - это сопоставить значения с ключом и сделать противоположное, чтобы сопоставить ключи со значением, создающим это:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
важно, чтобы вы использовали,
<Object, Object>
чтобы вы могли отобразитьkeys:Value
иValue:Keys
нравится этоteam1.put("United", 5);
team1.put(5, "United");
Так что если вы используете
team1.get("United") = 5
иteam1.get(5) = "United"
Но если вы используете какой-то конкретный метод для одного из объектов в парах, мне будет лучше, если вы создадите другую карту:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
а потом
team1.put("United", 5);
team1Keys.put(5, "United");
и помни, будь проще;)
источник
Получить ключ и его значение
например
Напечатает: Ключ: Единое значение: 5 Ключ: Барселона Значение: 6
источник