Jak posortować mapę według wartości w Javie

Jak posortować mapę według wartości w Javie

W Javie „Mapy”To potężna struktura danych używana do przechowywania danych. Mapa może łatwo określić odpowiednią wartość dla danego klucza, ponieważ mapa przechowuje dane w parach kluczowych, gdzie każdy klucz ma odpowiednią unikalną wartość. Aby pobrać te wartości z mapy, wymagany jest unikalny klucz; Jednak wartości mogą być takie same dla dwóch unikalnych kluczy.

W tym artykule wyjaśniono metodę sortowania mapy według wartości w Javie.

Jak posortować mapę według wartości w Javie?

W Javie mapa może być sortowana według wartości:

  • Za pomocą metody sort ()
  • Za pomocą metody sortowanej ()

Teraz sprawdzimy każdą z wymienionych metod jeden po drugim!

Metoda 1: Sortuj mapę według wartości w Javie za pomocą metody sort ()

„„sortować()”Metoda to statyczna metoda klasy kolekcji Java. Tę metodę można zastosować tylko do list takich jak LinkedList, ArrayList i tak dalej.

W tej sekcji pokazuje metodę sortowania wartości elementów mapy w kolejności rosnącej i malejącej.

Przykład 1: Sortuj mapę według wartości w kolejności rosnącej

W tym przykładzie sortujemy wartości mapy w kolejności rosnącej za pomocą „Porównowanie wartości ()”I„ „sortować()". Najpierw utworzymy mapę typu liczb całkowitych o nazwie „mapa”W następujący sposób:

Mapa map = new Hashmap ();

Następnie umieszczamy wartości utworzonej mapy w formie par kluczowych:

mapa.Put (7, 10);
mapa.Put (1, 1000);
mapa.Put (5, 380);
mapa.Put (3, 700);

Wydrukuj mapę jako parę wartości kluczowej za pomocą „dla każdego" pętla. Pętla Foreach jest wykorzystywana tylko do wielokrotnego zapętlania przez każdy element na mapie. Dodaliśmy „Wyrażenie lambda”(->) z pętlą, aby uniknąć wielu wierszy w kodzie źródłowym:

mapa.Foreach ((k, v)-> system.na zewnątrz.println (k + ":" + v));

Następnie wydrukujemy następujące oświadczenie za pomocą „System.na zewnątrz.println ()" metoda:

System.na zewnątrz.println („Wartości po sortowaniu:”);

Aby sortować wpisy za pomocą „sortować()„Metoda, musimy najpierw utworzyć listę z zestawem wpisów zwróconych przez„Entymet ()" metoda:

Lista> nList = nowa ArrayList (mapa.ententset ());

Teraz nazwiemy metodę sort (), przekazując „Porównowanie wartości ()„Metoda jako argument umożliwiający porównanie wartości wpisu:

nlist.Sort (wpis.Porównowanie wartości ());

Na koniec wydrukujemy posortowane wartości mapy za pomocą pętli Foreach:

nlist.Foreach (system.Out :: println);

Notatka: Podczas wykonywania powyższego przykładu należy zaimportować biblioteki związane z mapą, listą, arrayList, Mapentry, Hashmap u góry kodu źródłowego.

Wyjście pokazuje, że mapa jest sortowana według wartości w kolejności rosnącej:

Przykład 2: Sortuj mapę według wartości w kolejności malejącej

W tym przykładzie sortujemy wartości mapy za pomocą „sortować()”Metoda i„Porównowanie wartości ()”Metoda sortowania elementów mapy w kolejności malejącej. Najpierw utworzymy mapę typu liczb całkowitych, aby przechowywać wartości INT:

Mapa map = new Hashmap ();

Następnie dodamy dane na mapie w postaci par kluczowych:

mapa.Put (7, 10);
mapa.Put (1, 100);
mapa.Put (5, 3800);
mapa.Put (3, 70);

Utworzymy listę, aby sortować elementy mapy:

Lista> nList = nowa ArrayList (mapa.ententset ());

Tutaj nazwiemy „Porównowanie wartości ()„Metoda, przekazując„Odwrotna kolejność()„Metoda„Komparator„Klasa jako argument. Zwróci wartości mapy w odwrotnej kolejności:

nlist.Sort (wpis.Porównanie wartości (komparator.Odwrotna kolejność());

Wydrukuj posortowane wartości za pomocą „dla każdego" pętla:

nlist.Foreach (system.Out :: println);

Jak widać, wartości mapy są sortowane w kolejności malejącej:

Zobaczmy inną metodę sortowania elementów mapy według wartości.

Metoda 2: Sortuj mapę według wartości w Javie za pomocą metody sorted ()

Drugim podejściem jest sortowanie mapy według wartości za pomocą interfejsu API strumienia. Interfejs API strumienia zawiera szereg metod, które można użyć do przetwarzania kolekcji obiektów, takich jak Stream () i Sorted ().

W tej sekcji wydrukujemy również mapę według wartości zarówno w kolejności rosnącej, jak i zstępującej.

Przykład 1: Sortuj mapę według wartości w kolejności rosnącej

Ten przykład użyje tej samej wartości mapy i sortuje je w kolejności rosnącej za pomocą „posortowane ()„Metoda API strumienia. Użyjemy „strumień()„Metoda przekształcenia zestawu mapy w strumień, a następnie sortowanie mapy za pomocą„posortowane ()" metoda.

„„Porównowanie wartości ()„Metoda mapy zapewnia„posortowane ()”Metoda z dodatkowymi informacjami na temat naturalnej kolejności sortowania. Wreszcie „„dla każdego„Pętla może być używana do dostępu do wszystkich elementów i uzyskania par kluczowych jeden po drugim:

Strumień> SORTED = mapa.Entymet ().strumień()
.posortowany (mapa.Wejście.Porównowanie wartości ());

Wyjście pokazuje, że mapa jest sortowana według wartości w kolejności rosnącej za pomocą metody sortowanej ():

Przykład 2: Sortuj mapę według wartości w kolejności malejącej

Aby sortować mapę według wartości w kolejności malejącej, użyjemy „Porównowanie wartości ()„Metoda, przekazując„Odwrotna kolejność()„Metoda jako argument„posortowane ()" metoda:

Strumień> SORTED = mapa.Entymet ().strumień() .posortowany (mapa.Wejście.Porównanie wartości (komparator.Odwrotna kolejność()));

Jak widać, „posortowane ()„Metoda ułożyła wartość mapy w kolejności malejącej:

Podaliśmy wszystkie podstawowe informacje związane z sortowaniem mapy według wartości.

Wniosek

Aby sortować mapę według wartości w Javie, użyj „sortować()”Metoda i„posortowane ()„Metoda z metodą porównywania wartości (). Metody te sortują wartości w kolejności rosnącej, podczas gdy dla kolejności maleń. Ten artykuł obejmował różne metody Java do sortowania mapy według wartości.