Ниже приведены значения, содержащиеся в HashMap.
statusName {Active=33, Renewals Completed=3, Application=15}
Код Java для получения первого ключа (т.е. активного)
Object myKey = statusName.keySet().toArray()[0];
Как мы можем собрать первое «значение» ключа (т.е. 33), я хочу сохранить и «ключ», и «значение» в отдельной переменной.
HashMap
записи неупорядочены, и поэтому "первый" может изменяться всякий раз, когда вы изменяете карту?HashMap
? Если вы его вообще измените, вы можете получить результаты в совершенно другом порядке.Ответы:
Вы можете попробовать это:
Имейте в виду,
HashMap
что порядок размещения не гарантируется. ИспользуйтеLinkedHashMap
для сохранения порядка.Например:
Вывод:
источник
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... мой класс, который я указал вместоString
нужного места ... не могу найти ответ в Интернете ... помощьGson
для преобразования объекта значения в a,String
а затем проанализировал его обратно в мой тип класса. Это уродливо, но я действительно не мог найти другого решения для того, что так легко сделать на других языках (сейчас я изучаю Java)Чтобы получить «первое» значение:
Чтобы получить значение «первого» ключа:
Примечание: приведенный выше код протестирован и работает.
Я говорю «первый», потому что записи HashMap не упорядочены.
Однако LinkedHashMap выполняет итерацию своих записей в том же порядке, в котором они были вставлены - вы можете использовать это для своей реализации карты, если порядок вставки важен.
источник
Java 8 способ сделать,
String firstKey = map.keySet().stream().findFirst().get();
источник
Вы также можете попробовать это для получения всей первой записи,
Это чтобы получить только ключ первой записи,
Это чтобы получить только значение первой записи,
Более того, если вы знаете, что делаете, и хотите получить второй (то же самое для третьего и т. Д.) Элемент карты, вам следует попробовать это,
источник
Используя
youMap.get(keyYouHave)
, вы можете получить от этого ценность.Да, вы можете присвоить это переменной.
Подожди ......... это еще не конец.
Если вы (бизнес-логика) зависите от порядка вставки и извлечения, вы увидите странные результаты. Карта не заказана, они не будут храниться в заказе. Помните об этом факте. Воспользуйтесь альтернативой, чтобы сохранить свой порядок. Наверное,
LinkedHashMap
источник
Обратите внимание, что вы должны отметить, что ваш логический поток никогда не должен полагаться на доступ к
HashMap
элементам в каком-либо порядке, просто потому, чтоHashMap
s не упорядочены,Collection
и это не то, для чего они предназначены. (Вы можете узнать больше о заказанных и сортировочных коллекциях в этом посте ).Возвращаясь к посту, вы уже выполнили половину работы, загрузив первый ключ элемента:
Просто позвоните,
map.get(key)
чтобы получить соответствующее значение:источник
Помните, что порядок вставки на карте вообще не соблюдается. Попробуй это :
Я использую это только тогда, когда я уверен, что это
map.size() == 1
.источник
Улучшение ответа whoami. Поскольку
findFirst()
возвращает значениеOptional
, рекомендуется проверить, есть ли значение.Кроме того, некоторые отметили, что поиск первого ключа a
HashSet
ненадежен. Но иногда бываютHashMap
пары; т.е. на каждой карте у нас есть один ключ и одно значение. В таких случаях удобно быстро найти первый ключ такой пары.источник
Также хороший способ сделать это :)
источник
Вы также можете попробовать следующее:
источник