Poniżej znajdują się wartości zawarte w HashMap
statusName {Active=33, Renewals Completed=3, Application=15}
Kod Java do uzyskania pierwszego klucza (tj. Aktywnego)
Object myKey = statusName.keySet().toArray()[0];
Jak możemy zebrać pierwszy klucz „Wartość” (tj. 33), chcę przechowywać zarówno „Klucz”, jak i „Wartość” w osobnej zmiennej.
HashMap
wpisy są nieuporządkowane, więc „pierwszy” może się zmienić za każdym razem, gdy zmodyfikujesz mapę?HashMap
? Jeśli w ogóle go zmodyfikujesz, możesz uzyskać wyniki w zupełnie innej kolejności.Odpowiedzi:
Możesz spróbować tego:
Pamiętaj,
HashMap
że nie gwarantuje realizacji zamówienia reklamowego. Użyj a,LinkedHashMap
aby zachować porządek.Na przykład:
Wynik:
źródło
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... moja klasa, którąString
podałem zamiast we właściwym miejscu ... nie mogę znaleźć odpowiedzi online ... pomocGson
do konwersji obiektu wartości na a,String
a następnie przeanalizowałem go z powrotem do mojego typu klasy. To brzydkie, ale naprawdę nie mogłem znaleźć żadnego innego rozwiązania dla czegoś, co jest tak łatwe do zrobienia w innych językach (teraz uczę się Javy)Aby uzyskać „pierwszą” wartość:
Aby uzyskać wartość „pierwszego” klucza:
Uwaga: powyższy kod został przetestowany i działa.
Mówię „pierwszy”, ponieważ wpisy HashMap nie są uporządkowane.
Jednak LinkedHashMap iteruje swoje wpisy w tej samej kolejności, w jakiej zostały wstawione - możesz tego użyć do implementacji mapy, jeśli kolejność wstawiania jest ważna.
źródło
Sposób działania Java 8,
String firstKey = map.keySet().stream().findFirst().get();
źródło
Możesz również spróbować tego, aby uzyskać cały pierwszy wpis,
Ma to na celu uzyskanie tylko klucza pierwszego wpisu,
Ma to na celu pobranie tylko wartości pierwszego wpisu,
Ponadto, jeśli wiesz, co robisz i chcesz otrzymać drugi (taki sam dla trzeciego itp.) Element mapy, powinieneś spróbować tego,
źródło
Używając
youMap.get(keyYouHave)
, możesz uzyskać jego wartość.Tak, możesz to przypisać do zmiennej.
Poczekaj… to nie koniec.
Jeśli (logika biznesowa) zależy od kolejności wstawiania i pobierania, zobaczysz dziwne wyniki. Mapa nie jest uporządkowana, nie będzie przechowywana w zamówieniu. Pamiętaj o tym. Skorzystaj z alternatywy, aby zachować swoje zamówienie. Prawdopodobnie
LinkedHashMap
źródło
Zauważ, że powinieneś zauważyć, że twój przepływ logiczny nigdy nie może polegać na dostępie do
HashMap
elementów w jakiejś kolejności, po prostu mówiąc, ponieważHashMap
s nie są uporządkowaneCollection
i nie jest to ich celem. (Możesz przeczytać więcej o kolekcjach odered i sorter w tym poście ).Wracając do postu, wykonałeś już połowę pracy, ładując klucz pierwszego elementu:
Wystarczy zadzwonić,
map.get(key)
aby uzyskać odpowiednią wartość:źródło
Pamiętaj, że generalnie na mapie nie jest przestrzegana kolejność reklam. Spróbuj tego :
Używam tego tylko wtedy, gdy jestem tego pewien
map.size() == 1
.źródło
Poprawianie odpowiedzi whoami. Ponieważ
findFirst()
zwraca anOptional
, dobrą praktyką jest sprawdzenie, czy istnieje wartość.Niektórzy zauważyli również, że znalezienie pierwszego klucza a
HashSet
jest zawodne. Ale czasami mamyHashMap
pary; czyli na każdej mapie mamy jeden klucz i jedną wartość. W takich przypadkach wygodne jest szybkie znalezienie pierwszego klucza z takiej pary.źródło
To także fajny sposób na zrobienie tego :)
źródło
Możesz też spróbować poniżej:
źródło