Come ordinare una mappa per valore in java

Come ordinare una mappa per valore in java

In Java, "Mappe"Sono una potente struttura di dati utilizzata per l'archiviazione dei dati. Una mappa può determinare facilmente il valore appropriato per una determinata chiave perché la mappa memorizza i dati in coppie di valore chiave, in cui ciascuna chiave ha un valore univoco corrispondente. Per recuperare questi valori da una mappa, è richiesta una chiave univoca; Tuttavia, i valori possono essere gli stessi per due chiavi uniche.

Questo articolo spiegherà il metodo di smistamento di una mappa per valore in Java.

Come ordinare una mappa per valore in java?

In Java, una mappa può essere ordinata per valore:

  • Usando il metodo Ord ()
  • Usando il metodo Ordined ()

Ora controlleremo ciascuno dei metodi menzionati uno per uno!

Metodo 1: ordinare una mappa per valore in java usando il metodo Ord ()

IL "ordinare()"Il metodo è un metodo statico della classe di raccolta Java. Questo metodo può essere applicato solo a elenchi come LinkedList, ArrayList e così via.

Questa sezione dimostrerà il metodo per ordinare i valori degli elementi della mappa in ordine crescente e discendente.

Esempio 1: ordinare una mappa per valore in ordine crescente

In questo esempio, ordineremo i valori della mappa in ordine crescente usando "ConfrontalingByValue ()" e il "ordinare()". Per prima cosa creeremo una mappa di tipo intero chiamato "carta geografica" come segue:

Carta geografica map = new HashMap ();

Quindi, inseriamo i valori sulla mappa creata sotto forma di coppie di valore chiave:

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

Stampa la mappa come coppia di valore chiave usando "per ciascuno" ciclo continuo. Il ciclo foreach viene utilizzato solo per il ciclo attraverso ogni elemento nella mappa. Abbiamo aggiunto un “espressione di lambda"(->) con il ciclo per evitare più righe nel codice sorgente:

carta geografica.foreach ((k, v)-> sistema.fuori.println (k + ":" + v));

Quindi, stamperemo la seguente dichiarazione usando "Sistema.fuori.println ()" metodo:

Sistema.fuori.println ("i valori dopo l'ordinamento:");

Per ordinare le voci con "ordinare()"Metodo, dobbiamo prima creare un elenco con il set di voci restituite da"EntrySet ()" metodo:

Elenco> nlist = new ArrayList (mappa.entryset ());

Ora chiameremo il metodo Ord () passando il "ConfrontalingByValue ()"Metodo come argomento per consentire il confronto dei valori della voce:

nlist.Ordina (voce.confrontareByValue ());

Infine, stamperemo i valori ordinati della mappa usando il ciclo foreach:

nlist.foreach (sistema.out :: println);

Nota: Durante l'esecuzione dell'esempio sopra, è necessario importare le librerie relative a mappa, elenco, arraylist, mapentry, hashmap nella parte superiore del codice sorgente.

L'output mostra che la mappa è ordinata per valore nell'ordine ascendente:

Esempio 2: ordinare una mappa per valore in ordine decrescente

In questo esempio, ordineremo i valori di una mappa usando "ordinare()Metodo e "ConfrontalingByValue ()"Metodo per ordinare gli elementi della mappa in ordine decrescente. Qui, in primo luogo, creeremo una mappa di tipo intero per archiviare i valori int:

Carta geografica map = new HashMap ();

Quindi, aggiungeremo i dati in una mappa sotto forma di coppie di valore chiave:

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

Creeremo un elenco per ordinare gli elementi della mappa:

Elenco> nlist = new ArrayList (mappa.entryset ());

Qui, chiameremo il "ConfrontalingByValue ()Metodo "passando un"ordine inverso()Metodo del "Comparatore"Classe come argomento. Restituirà i valori della mappa in ordine inverso:

nlist.Ordina (voce.Confronto di.Value (comparatore.ordine inverso());

Stampa i valori ordinati usando "per ciascuno" ciclo continuo:

nlist.foreach (sistema.out :: println);

Come puoi vedere, i valori della mappa sono ordinati nell'ordine decrescente:

Vediamo un altro metodo per ordinare gli elementi della mappa per valore.

Metodo 2: ordinare una mappa per valore in java usando il metodo Ordined ()

Il secondo approccio è quello di ordinare la mappa per valori usando l'API di flusso. L'API del flusso contiene una serie di metodi che possono essere utilizzati per elaborare una raccolta di oggetti, come Stream () e Ordined ().

In questa sezione, stamperemo anche la mappa per valori sia in ordine crescente che discendente.

Esempio 1: ordinare una mappa per valore in ordine crescente

Questo esempio utilizzerà lo stesso valore della mappa e li ordinerà in ordine crescente usando "smistato()"Metodo di flusso API. Utilizzeremo il "flusso()"Metodo per trasformare l'ingresso della mappa in un flusso e quindi ordinare la mappa usando"smistato()" metodo.

IL "ConfrontalingByValue ()"Il metodo della mappa fornisce il"smistato()"Metodo con ulteriori informazioni sull'ordine di ordinamento naturale. Infine, il "per ciascuno"Loop può essere utilizzato per accedere a tutti gli elementi e ottenere le coppie di valore chiave uno per uno:

Flusso> ordinato = mappa.EntrySet ().flusso()
.Ordinato (mappa.Iscrizione.confrontareByValue ());

L'output mostra che la mappa è ordinata per valore in ordine crescente usando il metodo Ordined ():

Esempio 2: ordinare una mappa per valore in ordine decrescente

Per ordinare la mappa per valore in ordine decrescente, useremo il "ConfrontalingByValue ()"Metodo passando"ordine inverso()Metodo "come argomento per"smistato()" metodo:

Flusso> ordinato = mappa.EntrySet ().flusso() .Ordinato (mappa.Iscrizione.Confronto di.Value (comparatore.ordine inverso()));

Come puoi vedere, il "smistato()"Metodo ha organizzato il valore della mappa in ordine decrescente:

Abbiamo fornito tutte le informazioni essenziali relative all'ordinamento di una mappa per valore.

Conclusione

Per ordinare una mappa per valore in Java, usa il "ordinare()Metodo e il "smistato()"Metodo con il metodo di confronto. Questi metodi ordinano i valori in ordine crescente, mentre per l'ordine decrescente, è necessario chiamare il metodo di reverseOrder () della classe Comparatore come argomento dei metodi specificati. Questo articolo ha coperto vari metodi Java per ordinare una mappa per valore.