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:
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:
Kartkart = 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:
Kartkart = 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.