Introduzione all'ordinamento in Java

  • L'ordinamento in Java fondamentalmente sta organizzando un gruppo di elementi memorizzati da qualche parte in un ordine particolare, questo ordine può essere sia crescente che decrescente. Esistono molti scenari nella programmazione in tempo reale in cui diventa necessario ordinare gli elementi in quanto rende anche la ricerca di un elemento particolare facile in quanto gli elementi possono essere recuperati facilmente dall'indice degli array direttamente se ordinati. Gli elementi che devono essere ordinati possono essere archiviati in un array o in una raccolta. La raccolta è di molti tipi in insiemi simili a Java, albero, mappa, heap, elenco, ecc. Sebbene esistano diversi tipi di algoritmi di ordinamento che vengono utilizzati per ordinare gli elementi in un ordinamento a bolle come array, ordinamento heap, ordinamento inserzione, Selezione ordinamento, Unisci ordinamento, ecc.
  • I programmatori utilizzano algoritmi diversi per ordinare gli elementi in base ai loro requisiti specifici e alla complessità degli algoritmi. Questi algoritmi di ordinamento sono implementati attraverso l'uso di vari cicli e variabili per iterare attraverso di esso. Oltre a utilizzare gli algoritmi di ordinamento per ordinare gli elementi in un array, Java fornisce la funzione integrata di ordinamento che può aiutare con lo stesso e il programmatore non ha bisogno di essere bloccato in grandi cicli e pensare alla complessità. Sì, hai sentito bene, in Java la funzione sort () viene utilizzata per ordinare gli elementi memorizzati in array o raccolte e quello con una complessità molto minore di o (n (logn)). Sebbene l'implementazione del metodo in entrambi sia leggermente diversa.

Sintassi per array:

Arrays.sort(array_name);

Per le collezioni

Collections.sort(array_name_list);

  • Qui array_name e array_name_list è il nome dell'array o della raccolta che deve essere ordinata.
  • Le matrici sono il nome di classi di Java.
  • La raccolta è un framework in Java.
  • sort () è la funzione di ordinamento integrata utilizzata in Java.

Come viene eseguito l'ordinamento in Java?

Di seguito sono riportati i punti come segue:

  • Attraverso l'uso di algoritmi di ordinamento, l'ordinamento può anche essere eseguito con algoritmi che variano da inefficiente a efficiente e ogni algoritmo ha la sua complessità temporale e spaziale.
  • A volte questi algoritmi presentano una complessità molto elevata che non possono essere utilizzati in scenari reali in cui è necessario gestire grandi quantità di dati.
  • Come accennato in precedenza, nella funzione integrata Java, sort () viene utilizzato per ordinare tutti gli elementi di un array e una raccolta. Secondo il DOC Java ufficiale, Array.sort utilizza il quicksort che è il doppio pivot e relativamente molto più veloce dell'ordinamento rapido a singolo pivot.
  • Uno dei maggiori vantaggi di questo è che fornisce una complessità di O (n (logn)). Utilizza l'implementazione molto stabile e iterativa dell'oggetto array di Merge Sort. Java fornisce un metodo per ordinare l'array anche in ordine inverso in base al requisito del programmatore di ordinare in ordine crescente o decrescente. Il metodo Collections.reverseOrder () viene utilizzato per ordinare gli elementi in ordine inverso o decrescente.
  • Java 8 offre anche la possibilità di ordinare le matrici in parallelo usando l'ordinamento in parallelo che utilizza il concetto multithreading di Java e divide l'intero array in parti e le unisce dopo l'ordinamento.

Tipi di ordinamento in Java

Di seguito sono riportati alcuni dei modi in cui l'ordinamento può essere eseguito in Ordinamento in Java:

1. sort (nome_array)

Viene utilizzato per ordinare l'array completo in ordine crescente Per impostazione predefinita, questo metodo ordina gli elementi dell'array in ordine crescente.

Codice:

import java.util.Arrays;
public class SimpleSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Produzione:

2. Collection.reverseOrder ()

Questo metodo in Java viene utilizzato per ordinare l'array in ordine inverso o decrescente. Esistono scenari in cui è necessario ordinare gli elementi in ordine decrescente e Java lo fa tramite il metodo integrato.

Codice:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, Collections.reverseOrder());
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Produzione:

3. sort (int () nome_array, int findex, int lindex)

Se è necessario ordinare una parte di un array anziché l'intero array, Java fornisce la possibilità di ordinare questo tipo di array specificando 3 parametri, ovvero il nome dell'array, il primo indice da cui deve essere avviato l'ordinamento e l'ultimo indicizzare fino a quando è necessario eseguire l'ordinamento.

Codice:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, 1, 5);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)

Produzione:

4. Arrays.parllelSort (array_name)

Da Java 8, è stata rilasciata la nuova API dell'ordinamento parallelo. Fondamentalmente in ordinamento parallelo, l'array è diviso in 2 sotto-array e quindi la funzione di base Array.sort () viene eseguita da un thread separato. Gli array ordinati vengono quindi uniti alla fine per formare l'array completamente ordinato. Questo viene fatto per sfruttare l'uso del multi-threading.

Codice:

import java.util.Arrays;
public class ParallelSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//parallel Sort function to sort the above array
Arrays.parallelSort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Produzione:

Come un normale Array.sort (), Arrays.parallelSort () fornisce anche la possibilità di ordinare un determinato intervallo di array o ordinare un array in ordine inverso.

Sintassi:

// to Sort a range of array by parallelsort
Arrays.parallelSort(array_name, findex, lindex);
// to sort an array in reverse order using parallelSort
Arrays.parallelSort(array_name, Collections.reverseOder());

5. Collection.sort ()

Questo metodo viene utilizzato per ordinare le raccolte come elenco, mappa, Set, ecc. Utilizza l'ordinamento di unione e offre la stessa complessità di Array.sort (), ovvero O (n (logn)).

1. Ordinamento di un elenco in ordine crescente

Codice:

import java.util.Arrays;
import java.util.Collections;
public class ListSort
(
public static void main(String() args)
(
//Unsorted list
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Produzione:

2. Ordinamento di un elenco di array in ordine decrescente

Codice:

import java.util.Arrays;
import java.util.Collections;
public class ListSortRev
(
public static void main(String() args)
(
//Unsorted array list of Integers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Produzione:

3. Ordinamento del set

Esistono 3 regole di base durante l'ordinamento di una raccolta 'Set' utilizzando il metodo di ordinamento sopra (array_name):

    1. Converti il ​​set nell'elenco.
    2. Ordina l'elenco usando il metodo sort (array_name).
    3. Convertire nuovamente l'elenco ordinato risultante in Set.

Codice:

List numList = new ArrayList(num) ;
//Sorting the list retrieved above
Collections.sort(numList);
// Converting sorted List into Set
num = new LinkedHashSet(numList);
//Printing the Resulting Set on console
System.out.println(num);
)
)

Produzione:

4. Ordinare una mappa

Collection Map in Java è una combinazione di chiave e valore Quindi l'ordinamento può essere effettuato in entrambi i modi tramite chiave o valore.

  • Ordina una mappa per chiave: vediamo l'esempio seguente di Ordinamento di una mappa per chiave.

Codice:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class SortHashKey
(
public static void main(String() args)
(
HashMap map = new HashMap();
map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
TreeMap treeMap = new TreeMap(map);
System.out.println(treeMap);
)
)

Produzione:

Uno dei modi più semplici per ordinare gli elementi della Mappa in base alle chiavi è aggiungendo gli elementi della mappa non ordinati nella TreeMap. TreeMap ordina automaticamente gli elementi in ordine crescente di Hash Keys. Sebbene collection.sort () possa anche essere usato per fare lo stesso, è alquanto complesso e deve essere codificato bene.

  • Ordina una mappa per valore: di seguito è riportato un esempio di come l'ordinamento può essere eseguito in una mappa usando il valore.

Codice:

import java.util.HashMap;
import java.util.Map;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
public class SortHashValue
(
public static void main(String() args)
(
HashMap map = new HashMap(); map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
LinkedHashMap sorted = new LinkedHashMap(); map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));

Produzione:

Nell'esempio precedente di ordinamento di Mappa per valore, in primo luogo impostiamo le voci utilizzando il map.entrySet () e quindi il flusso di quelle voci utilizzando il metodo stream (), chiama l'array ordinato utilizzando il metodo sort () confrontando per valore nel paio. per ogni ordinato () viene utilizzato per attraversare il flusso per produrre il risultato.

5. Comparabile

Comparable è un'interfaccia e rende le classi comparabili alle sue istanze.

Per confrontare le due istanze della stessa classe È necessario implementare l'interfaccia comparabile e il metodo compareTo () deve essere ignorato. Le classi che implementano questa interfaccia, il suo elenco di oggetti sono ordinati automaticamente usando il metodo Collections.sort () e Arrays.sort ().

Codice:

ArrayList list = new ArrayList();
// Adding the instance objects of class Employee in list
list.add(new Employee(10, "Akshay")));
list.add(new Employee(40, "Bob")));
list.add(new Employee(20, "Priyansh")));
list.add(new Employee(50, "Chandni")));
list.add(new Employee(70, "Yashi")));
Collections.sort(list);
// Printing the sorted list on Console
System.out.println(list);

Produzione:

Conclusione

Spiegati sopra sono i metodi di ordinamento in Java utilizzati in Java per più scenari di array e raccolte. Un programmatore deve tenere presente come utilizzare il metodo sort () per diversi tipi di raccolte. Con Java 8, l'ordinamento può anche essere eseguito tramite Lambdas per implementare l'interfaccia Comparator, che semplifica l'ordinamento. Sebbene sia un po 'difficile apprenderli tutti, può essere facile lavorare con loro se tutti i concetti di base di Java, in particolare lo streaming di dati, gli array e le raccolte, sono chiari. Sebbene gli algoritmi di ordinamento siano sempreverdi e possano essere facilmente implementati in altri linguaggi di programmazione simili a Java, presentano una complessità variabile e la funzione di ordinamento () di Java integrata semplifica le cose se i concetti di base vengono appresi a memoria.

Articoli consigliati

Questa è una guida all'ordinamento in Java. Qui discutiamo delle prestazioni dell'ordinamento in Java e dei tipi di ordinamento in Java con codici e output diversi. Puoi anche consultare i nostri altri articoli correlati per saperne di più-

  1. JComboBox in Java
  2. Ordinamento in C
  3. Heap Ordina in C
  4. Bubble Ordina in JavaScript
  5. Che cos'è l'ordinamento in C ++?
  6. Introduzione all'ordinamento in PHP
  7. Ordinamento dell'heap in Python
  8. Inserimento Ordina in JavaScript
  9. Hashmap in Java
  10. Paragonabile in Java Esempio | Interfaccia di raccolta in Java

Categoria: