Wprowadzenie do sortowania w Javie

  • Sortowanie w Javie polega zasadniczo na ułożeniu grupy elementów przechowywanych gdzieś w określonej kolejności, kolejność ta może być zarówno rosnąca, jak i malejąca. W programowaniu w czasie rzeczywistym pojawia się wiele scenariuszy, w których staje się koniecznością sortowania elementów, ponieważ powoduje to również wyszukiwanie szczególny element jest łatwy, ponieważ elementy można łatwo pobrać poprzez indeks tablic bezpośrednio, jeśli są posortowane. Elementy, które należy posortować, mogą być przechowywane w tablicy lub w kolekcji. Zbiór jest wielu typów w zestawach podobnych do Java, drzewku, mapie, sterty, liście itp. Chociaż istnieją różne typy algorytmów sortowania, które są używane do sortowania elementów w układzie tablicowym sortowania bąbelkowego, sortowania sterty, sortowania wstawiania, Sortuj według wyboru, Sortuj według sortowania itp.
  • Programiści używają różnych algorytmów do sortowania elementów zgodnie z ich specyficznymi wymaganiami i złożonością algorytmów. Te algorytmy sortowania są realizowane za pomocą różnych pętli i zmiennych w celu iteracji. Oprócz używania algorytmów sortowania do sortowania elementów w tablicy, Java zapewnia wbudowaną funkcję sortowania, która może pomóc w tym samym, a programista nie musi utknąć w dużych pętlach i myśleć o złożoności. Tak, dobrze słyszeliście, w Javie funkcja sort () służy do sortowania elementów przechowywanych w tablicach lub kolekcjach i przy bardzo mniejszej złożoności o (n (logn)). Chociaż implementacja metody w obu przypadkach jest nieco inna.

Składnia tablic:

Arrays.sort(array_name);

Do kolekcji

Collections.sort(array_name_list);

  • Tutaj nazwa_macierzy i lista_nazów_macierzy to nazwa tablicy lub kolekcji, którą należy posortować.
  • Tablice to nazwy klas Java.
  • Kolekcja jest strukturą Java.
  • sort () to wbudowana funkcja sortowania używana w Javie.

Jak odbywa się sortowanie w Javie?

Oto następujące punkty:

  • Dzięki zastosowaniu algorytmów sortowania sortowanie można również przeprowadzać przy użyciu algorytmów od nieefektywnych do wydajnych, a każdy algorytm ma swoją złożoność czasową i przestrzenną.
  • Czasami algorytmy te mają bardzo wysoką złożoność, dlatego nie można ich używać w rzeczywistych scenariuszach, w których istnieje potrzeba obsługi dużej ilości danych.
  • Jak wspomniano powyżej, w wbudowanej funkcji Java sort () służy do sortowania wszystkich elementów tablicy i kolekcji. Według oficjalnego Java DOC, Array.sort używa quicksort, który jest podwójną osią obrotu i stosunkowo dużo szybszą niż pojedyncza funkcja szybkiego sortowania.
  • Jedną z największych zalet tego jest to, że zapewnia złożoność O (n (logn)). Wykorzystuje bardzo stabilną i iteracyjną implementację obiektu tablicy Merge Sort. Java zapewnia również metodę sortowania tablicy w odwrotnej kolejności, zgodnie z wymaganiami programisty, aby sortować w kolejności rosnącej lub malejącej. Metoda Collections.reverseOrder () służy do sortowania elementów w kolejności odwrotnej lub malejącej.
  • Java 8 zapewnia również możliwość sortowania tablic równolegle przy użyciu sortowania równoległego, które wykorzystuje koncepcję wielowątkowości Java i dzieli całą tablicę na części i łączy je po sortowaniu.

Rodzaje sortowania w Javie

Poniżej wymieniono niektóre sposoby przeprowadzania sortowania podczas sortowania w Javie:

1. sort (nazwa_tablicy)

Służy do sortowania całej tablicy w porządku rosnącym Domyślnie ta metoda sortuje elementy tablicy w kolejności rosnącej.

Kod:

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));
)
)

Wynik:

2. Collection.reverseOrder ()

Ta metoda w Javie służy do sortowania tablicy w kolejności odwrotnej lub malejącej. Istnieją scenariusze, w których musimy posortować elementy w kolejności malejącej, a Java robi to za pomocą wbudowanej metody.

Kod:

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));
)
)

Wynik:

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

Jeśli zachodzi potrzeba sortowania części tablicy zamiast całej tablicy, Java zapewnia możliwość sortowania tego typu tablicy poprzez określenie 3 parametrów, tj. Nazwy tablicy, pierwszego indeksu, od którego należy rozpocząć sortowanie, i ostatniego indeksuj do momentu, kiedy trzeba wykonać sortowanie.

Kod:

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));
)

Wynik:

4. Arrays.parllelSort (nazwa_tablicy)

Od Java 8 wydano nowe API sortowania równoległego. Zasadniczo w sortowaniu równoległym tablica jest podzielona na 2 pod-tablice, a następnie podstawowa funkcja Array.sort () jest wykonywana przez osobny wątek. Posortowane tablice są następnie scalane na końcu, aby utworzyć w pełni posortowaną tablicę. Ma to na celu wykorzystanie wielowątkowości.

Kod:

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));
)
)

Wynik:

Podobnie jak normalna Array.sort (), Arrays.parallelSort () zapewnia również możliwość sortowania określonego zakresu tablicy lub sortowania tablicy w odwrotnej kolejności.

Składnia:

// 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 ()

Ta metoda służy do sortowania kolekcji, takich jak lista, mapa, zestaw itp. Używa sortowania scalającego i daje taką samą złożoność jak Array.sort (), tj. O (n (logn)).

1. Sortowanie listy w porządku rosnącym

Kod:

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);
)
)

Wynik:

2. Sortowanie listy tablic w kolejności malejącej

Kod:

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);
)
)

Wynik:

3. Sortowanie zestawu

Istnieją 3 podstawowe zasady podczas sortowania zestawu „Set” przy użyciu powyższej metody sort (nazwa_kolekcji):

    1. Konwertuj zestaw na listę.
    2. Posortuj listę za pomocą metody sort (nazwa_kolejki).
    3. Konwertuj wynikową posortowaną listę z powrotem na Set.

Kod:

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);
)
)

Wynik:

4. Sortuj mapę

Kolekcja Mapa w Javie jest kombinacją klucza i wartości, więc sortowanie można wykonać na dwa sposoby, według klucza lub wartości.

  • Sortuj mapę według klucza: Zobaczmy poniższy przykład sortowania mapy według klucza.

Kod:

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);
)
)

Wynik:

Jednym z najprostszych sposobów sortowania elementów mapy według kluczy jest dodanie nieposortowanych elementów mapy w TreeMap. TreeMap automatycznie sortuje elementy w porządku rosnącym według kluczy skrótu. Chociaż kolekcja.sort () może być również wykorzystana do tego samego, jest nieco złożona i musi być dobrze zakodowana.

  • Sortuj mapę według wartości: Poniżej wymieniono przykład, w jaki sposób sortowania można dokonać na mapie przy użyciu wartości.

Kod:

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()));

Wynik:

W powyższym przykładzie sortowania mapy według wartości, najpierw ustawiamy wpisy za pomocą map.entrySet (), a następnie strumień tych wpisów za pomocą metody stream (), wywołuje posortowaną tablicę za pomocą metody sorted (), porównując wartość w para. dla każdego uporządkowanego () służy do przejścia strumienia w celu uzyskania wyniku.

5. Porównywalny

Porównywalny jest interfejsem i sprawia, że ​​klasy są porównywalne z jego instancjami.

Aby porównać dwa wystąpienia tej samej klasy Interfejs porównywalny musi zostać zaimplementowany, a metoda replaceTo () musi zostać zastąpiona. Klasy, które implementują ten interfejs, jego lista obiektów są sortowane automatycznie przy użyciu metod Collections.sort () i Arrays.sort ().

Kod:

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);

Wynik:

Wniosek

Wyjaśniono powyżej metody sortowania w Javie, które są używane w Javie dla wielu scenariuszy tablic i kolekcji. Programista musi pamiętać, jak należy stosować metodę sort () dla różnych typów kolekcji. W Javie 8 sortowanie można również wykonać za pomocą Lambdas w celu implementacji interfejsu komparatora, co ułatwia sortowanie. Chociaż nauczenie się ich wszystkich jest nieco trudne, praca z nimi może być łatwa, jeśli wszystkie podstawowe pojęcia dotyczące Javy, w szczególności strumieniowanie danych, tablice i kolekcje są jasne. Chociaż algorytmy sortowania są zawsze zielone i można je łatwo zaimplementować w innych językach programowania podobnych do języka Java, mają one różną złożoność, a wbudowana funkcja sort () języka Java ułatwia to, jeśli podstawowe pojęcia są przyswajane na pamięć.

Polecane artykuły

Jest to przewodnik po sortowaniu w Javie. Tutaj omawiamy, jak sortowanie działa w java i rodzaje sortowania w java z różnymi kodami i wyjściami. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-

  1. JComboBox w Javie
  2. Sortowanie w C.
  3. Sortuj sterty w C.
  4. Sortowanie bąbelkowe w JavaScript
  5. Co to jest Sortowanie w C ++?
  6. Wprowadzenie do sortowania w PHP
  7. Sortuj sterty w Pythonie
  8. Wstawianie Sortuj w JavaScript
  9. Hashmap w Javie
  10. Porównywalne w przykładzie Java | Interfejs kolekcji w Javie