To jest bardzo podstawowe pytanie, po prostu nie jestem tak dobra w Javie. Mam Mapę i chcę uzyskać listę lub coś z kluczy w posortowanej kolejności, więc mogę je powtórzyć.Jak mogę posortować klucze mapy w Javie?
Odpowiedz
Użyj TreeMap
, która jest implementacją interfejsu SortedMap
. Przedstawia klucze w posortowanej kolejności.
Map<String, Object> map = new TreeMap<String, Object>();
/* Add entries to the map in any order. */
...
/* Now, iterate over the map's contents, sorted by key. */
for (Map.Entry<String, ?> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Jeśli pracujesz z inną realizacją mapy, które nie są sortowane, jak chcesz, możesz przekazać je do constructor z TreeMap
stworzyć nową mapę z kluczami segregowanych.
void process(Map<String, Object> original) {
Map<String, Object> copy = new TreeMap<String, Object>(original);
/* Now use "copy", which will have keys in sorted order. */
...
}
A TreeMap
współpracuje z dowolnym typem klucza, który implementuje interfejs Comparable
, umieszczając je w ich „naturalnym” kolejności. W przypadku kluczy, które nie są Comparable
lub których naturalna kolejność nie jest tym, czego potrzebujesz, możesz zaimplementować swój własny Comparator
i określić go w constructor.
Masz kilka opcji. Wymienione w kolejności preferencji:
- użyć
SortedMap
:
SortedMap<whatever> myNewMap = new TreeMap<whatever>(myOldMap);
Jest to znacznie lepsze, jeśli chcesz iteracyjne więcej niż jeden raz. Utrzymuje klucze posortowane, więc nie musisz ich sortować przed iteracją. - Nie ma nr 2.
- Nie ma również nr 3.
SortedSet<whatever> keys = new TreeSet<whatever>(myMap.keySet());
List<whatever> keys = new ArrayList<whatever>(myMap.keySet()); Collections.sort(keys);
Dwa ostatnie będzie Ci to, co chcesz, ale powinien być stosowany tylko wtedy, gdy chcesz tylko iteracyjne raz, a potem zapomnieć całość.
W kroku 4 można również utworzyć zestaw drzewa (zbiór posortowany) zamiast listy, co pozwoli uniknąć wyraźnego wywołania funkcji sort(). –
@ David: Myślałem o tym, ale z jakiegoś powodu zapomniałem, że możliwe było powtórzenie Setu. Jednak za każdym razem wymaga sortowania. –
hmm podoba mi się # 4. dlaczego wymaga większego sortowania niż nr 1?myślałbym, że to było równie dobre –
Możesz utworzyć posortowaną kolekcję podczas iteracji, ale lepiej mieć najpierw uporządkowaną mapę. (Jak już zasugerowano)
Tak samo jak to zrobić.
Map<String, Object> map;
for(String key: new TreeSet<String>(map.keySet()) {
// accessed in sorted order.
}
- 1. Dart - Jak sortować klucze mapy
- 2. Groovy odwróć klucze mapy
- 3. Jak mogę posortować obiekty List [Int] w scala?
- 4. Jak mogę posortować XDocument przez atrybut?
- 5. immutable.js dostać klucze z mapy/hash
- 6. Usunąć wybrane klucze z mapy Dart
- 7. Write-Once + Read-Liczne mapy w Javie?
- 8. Jak posortować zestaw danych?
- 9. Jak posortować wektor STL?
- 10. Jak mogę posortować listę Perla w dowolnej kolejności?
- 11. Jak mogę posortować kolekcję Meteoryt w chwili wstawienia?
- 12. Jak posortować cyfry w liczbie?
- 13. Jak sortować klucze mapy C++ za pomocą std :: greater?
- 14. Jak posortować listę ciągów?
- 15. Jak posortować tablicę struktury
- 16. Jak mogę wyprodukować klucze patologiczne dla skrótu?
- 17. Jak mogę posortować listę na kilka sposobów na stronie JSP?
- 18. Jak mogę posortować tablicę ciągów alfabetycznie, gdy łańcuch zawiera åäö?
- 19. Jak mogę posortować plik txt o linii 5000000?
- 20. Jak mogę posortować ArrayList <ArrayList <String>>?
- 21. pandy - jak posortować wynik DataFrame.groupby.mean()?
- 22. Jak mogę posortować mapę według jej parametru .second
- 23. Jak mogę posortować listę pary <String, Integer>?
- 24. Jak mogę rozwinąć argumenty w Javie?
- 25. Jak mogę przechodzić przez wyliczenie w Javie?
- 26. Jak posortować listę według polu
- 27. Jak posortować wypełniony dokument w żądaniu wyszukiwania?
- 28. Jak posortować listę w języku Python?
- 29. Jak mogę uzyskać wartość/klucze obiektów NSDictionary w konsoli debuggera?
- 30. Jak skryptować indeksy, klucze, klucze obce w SQL Server
Kod, który spożywa, daje mi obiekt Map, więc w jaki sposób mogę go następnie przekształcić w TreeMap lub użyć TreeMap do sortowania? – Bialecki
Możesz utworzyć TreeMap za pomocą konstruktora, którego parametrem jest dowolna mapa. Gratuluję też erickson (zakładam, skoro jesteś tylko 5 reprezentantem od 10k). –
Ding! poziom erickson w górę. –