Hvordan sortere et kart etter verdi i Java

Hvordan sortere et kart etter verdi i Java

I Java, “Kart”Er en kraftig datastruktur som brukes til å lagre data. Et kart kan enkelt bestemme den aktuelle verdien for en gitt nøkkel fordi kartlagre data i nøkkelverdipar, der hver tast har en tilsvarende unik verdi. For å hente disse verdiene fra et kart, kreves det en unik nøkkel; Verdiene kan imidlertid være de samme for to unike nøkler.

Denne artikkelen vil forklare metoden for å sortere et kart etter verdi i Java.

Hvordan sortere et kart etter verdi i Java?

I Java kan et kart sorteres etter verdi:

  • Bruke sort () -metode
  • Ved hjelp av sortert () -metode

Vi vil nå sjekke ut hver av de nevnte metodene en etter en!

Metode 1: Sorter et kart etter verdi i Java ved bruk av sort () -metode

sortere()”Metode er en statisk metode i Java Collection -klassen. Denne metoden kan bare brukes på lister som LinkedList, ArrayList og så videre.

Denne delen vil demonstrere metoden for å sortere verdiene til kartelementer i stigende og synkende rekkefølge.

Eksempel 1: Sorter et kart etter verdi i stigende rekkefølge

I dette eksemplet vil vi sortere verdiene på kartet i stigende rekkefølge ved å bruke "Sammenligning av verdi ()" og "sortere()”. Vi vil først lage et kart-type kart kalt “kart" følgende:

Kart kart = new HashMap ();

Deretter legger vi verdiene til det opprettede kartet i form av nøkkelverdipar:

kart.put (7, 10);
kart.put (1, 1000);
kart.put (5, 380);
kart.put (3, 700);

Skriv ut kartet som et nøkkelverdipar ved å bruke “for hver" Løkke. Foreach -sløyfen blir bare brukt til looping gjennom hvert element på kartet gjentatte ganger. Vi har lagt til en "Lambda -uttrykk”(->) med løkken for å unngå flere linjer i kildekode:

kart.foreach ((k, v)-> system.ute.println (k + ":" + v));

Deretter vil vi skrive ut følgende uttalelse ved å bruke "System.ute.println ()”Metode:

System.ute.println ("Verdiene etter sortering:");

Å sortere oppføringene med “sortere()”Metode, vi må først lage en liste med settet med oppføringer returnert av“Entryset ()”Metode:

Liste> nList = ny ArrayList (kart.inngangssett ());

Nå vil vi kalle sort () -metoden ved å passere “Sammenligning av verdi ()”Metode som et argument for å tillate sammenligning av oppføringens verdier:

nlist.Sorter (oppføring.sammenligning ByValue ());

Til slutt vil vi skrive ut de sorterte verdiene på kartet ved å bruke foreach -sløyfen:

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

Merk: Når du utfører eksemplet ovenfor, må du importere bibliotekene relatert til kart, liste, arraylist, mapentry, hashmap øverst i kildekoden.

Utgangen viser at kartet er sortert etter verdi i stigende rekkefølge:

Eksempel 2: Sorter et kart etter verdi i synkende rekkefølge

I dette eksemplet vil vi sortere verdiene på et kart ved å bruke "sortere()”Metode og“Sammenligning av verdi ()”Metode for å sortere elementene på kartet i synkende rekkefølge. Her, først, vil vi lage et heltallkart for å lagre INT -verdier:

Kart kart = new HashMap ();

Deretter vil vi legge til dataene i et kart i form av nøkkelverdipar:

kart.put (7, 10);
kart.put (1, 100);
kart.put (5, 3800);
kart.put (3, 70);

Vi lager en liste for å sortere kartelementene:

Liste> nList = ny ArrayList (kart.inngangssett ());

Her vil vi kalle “Sammenligning av verdi ()”Metode ved å passere en“omvendt rekkefølge()”Metode for“Komparator”Klasse som et argument. Det vil returnere kartverdiene i omvendt rekkefølge:

nlist.Sorter (oppføring.Sammenligning av verdien (Comparator.omvendt rekkefølge());

Skriv ut de sorterte verdiene ved å bruke “for hver" Løkke:

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

Som du kan se kartverdiene er sortert i nedgangsrekkefølge:

La oss se en annen metode for å sortere kartelementer etter verdi.

Metode 2: Sorter et kart etter verdi i Java ved bruk av sortert () -metode

Den andre tilnærmingen er å sortere kartet med verdier ved hjelp av Stream API. Stream API inneholder en rekke metoder som kan brukes til å behandle en objektsamling, for eksempel strøm () og sortert ().

I denne delen vil vi også skrive ut kartet etter verdier i både stigende og synkende rekkefølge.

Eksempel 1: Sorter et kart etter verdi i stigende rekkefølge

Dette eksemplet vil bruke den samme kartverdien og sortere dem i stigende rekkefølge ved å bruke "sortert ()”Metode for Stream API. Vi vil bruke "strøm()”Metode for å gjøre kartets inngangssett til en strøm og sorter deretter kartet ved å bruke“sortert ()”Metode.

Sammenligning av verdi ()”Metoden på kartet gir“sortert ()”Metode med tilleggsinformasjon om den naturlige sorteringsrekkefølgen. Til slutt "for hver”Loop kan brukes til å få tilgang til alle elementene og få nøkkelverdiparene en etter en:

Strøm> sortert = kart.Entryset ().strøm()
.Sortert (kart.Inngang.sammenligning ByValue ());

Utgangen viser at kartet er sortert etter verdi i stigende rekkefølge ved bruk av sorterte () -metoden:

Eksempel 2: Sorter et kart etter verdi i synkende rekkefølge

For å sortere kartet etter verdi i synkende rekkefølge, vil vi bruke "Sammenligning av verdi ()”Metode ved å passere”omvendt rekkefølge()”Metode som et argument for“sortert ()”Metode:

Strøm> sortert = kart.Entryset ().strøm() .Sortert (kart.Inngang.Sammenligning av verdien (Comparator.omvendt rekkefølge()));

Som du kan se, "sortert ()”Metode arrangerte verdien av kartet i synkende rekkefølge:

Vi har gitt all den essensielle informasjonen relatert til å sortere et kart etter verdi.

Konklusjon

For å sortere et kart etter verdi i Java, bruk "sortere()”Metode og“sortert ()”Metode med ComparingByValue () -metoden. Disse metodene sorterer verdiene i stigende rekkefølge, mens du for synkende rekkefølge må kalle ReverseRoorder () -metoden til Comparator -klassen som et argument for de spesifiserte metodene. Denne artikkelen dekket forskjellige Java -metoder for å sortere et kart etter verdi.