Úvod do třídění v Javě
- Třídění v Javě je v zásadě uspořádání skupiny prvků uložených někde v určitém pořadí, toto pořadí může být jak vzestupné, tak sestupné. V programování v reálném čase přichází mnoho scénářů, kde je nutné třídit prvky, protože také hledá konkrétní prvek snadno, protože prvky mohou být snadno získány indexem polí přímo, pokud jsou tříděny. Prvky, které je třeba třídit, lze uložit buď do pole nebo do kolekce. Kolekce je mnoha typů v sadách Java, stromech, mapách, haldy, seznamu atd., Ačkoli existují různé typy algoritmů třídění, které se používají k třídění prvků v poli, jako je řazení bublin, řazení haldy, vkládání, Výběr řazení, Sloučit řazení atd.
- Programátoři používají různé algoritmy k třídění prvků podle jejich specifických požadavků a složitosti algoritmů. Tyto třídicí algoritmy jsou implementovány pomocí různých smyček a proměnných pro iteraci skrze ni. Kromě použití algoritmů třídění k třídění prvků v poli poskytuje Java vestavěnou funkci třídění, která může pomoci s tím a programátor nemusí být uvíznut ve velkých smyčkách a přemýšlet o složitosti. Ano, slyšeli jste správně, v Java sort () se funkce používá k třídění prvků uložených buď v polích nebo ve sbírkách, a to s velmi menší složitostí o (n (logn)). I když implementace metody v obou je trochu jiná.
Syntaxe pro pole:
Arrays.sort(array_name);
Pro sbírky
Collections.sort(array_name_list);
- Zde název_třídy a název_třídy je název pole nebo kolekce, kterou je třeba třídit.
- Pole jsou názvy tříd Java.
- Kolekce je rámec v Javě.
- sort () je zabudovaná funkce třídění používaná v Javě.
Jak probíhá třídění v Javě?
Následující body jsou následující:
- Prostřednictvím použití třídicích algoritmů lze třídění provádět také s algoritmy, které se liší od neefektivního k účinnému a každý algoritmus má svou vlastní časovou a prostorovou složitost.
- Někdy mají tyto algoritmy velmi vysokou složitost, že je nelze použít ve skutečných scénářích, kde je třeba zpracovat velké množství dat.
- Jak je uvedeno výše, ve vestavěné funkci Java se sort () používá k třídění všech prvků pole a kolekce. Podle oficiálního Java DOC, Array.sort používá quicksort, což je dvojitý pivot a relativně mnohem rychlejší než jednopivotní Quick Sort.
- Jednou z největších výhod tohoto je to, že poskytuje komplexnost O (n (logn)). Používá velmi stabilní a iterativní implementaci maticového objektu Merge Sort. Java poskytuje metodu řazení pole v opačném pořadí také podle požadavku programátora třídit buď vzestupně nebo sestupně. Metoda Collections.reverseOrder () se používá k třídění prvků v opačném nebo sestupném pořadí.
- Java 8 také poskytuje možnost třídění polí paralelně pomocí Parallel třídění, které používá multithreading koncept Java a rozděluje celé pole do částí a po třídění je sloučí.
Druhy třídění v Javě
Níže jsou uvedeny některé způsoby, kterými lze třídění provádět v Sorting in Java:
1. řazení (název_souboru)
Používá se k seřazení celého pole ve vzestupném pořadí Tato metoda standardně třídí prvky pole ve vzestupném pořadí.
Kód:
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));
)
)
Výstup:
2. Collection.reverseOrder ()
Tato metoda v Javě se používá k řazení pole v opačném nebo sestupném pořadí. Existují scénáře, ve kterých musíme prvky setřídit v sestupném pořadí a Java to dělá pomocí vestavěné metody.
Kód:
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));
)
)
Výstup:
3. sort (int () array_name, int findex, int lindex)
Pokud je třeba třídit část pole namísto celého pole, Java poskytuje možnost třídit tento typ pole zadáním 3 parametrů, tj. Názvu pole, prvního indexu, od kterého je třeba zahájit třídění a poslední index, dokud není třeba provést třídění.
Kód:
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));
)
Výstup:
4. Arrays.parllelSort (název_souboru)
Z Java 8 bylo vydáno nové API paralelního řazení. V podstatě při paralelním třídění je pole rozděleno do 2 dílčích polí a poté je základní funkce Array.sort () prováděna samostatným vláknem. Tříděná pole se na konci sloučí a vytvoří plně seřazené pole. To se provádí za účelem využití vícevláknových vláken.
Kód:
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));
)
)
Výstup:
Stejně jako normální Array.sort () poskytuje Arrays.parallelSort () také zařízení k třídění určitého rozsahu pole nebo třídění pole v obráceném pořadí.
Syntax:
// 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 ()
Tato metoda se používá k třídění kolekcí, jako je seznam, mapa, sada atd. Používá slučovací řazení a poskytuje stejnou složitost jako Array.sort (), tj. O (n (logn)).
1. Třídění seznamu ve vzestupném pořadí
Kód:
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);
)
)
Výstup:
2. Seřazení seznamu polí v sestupném pořadí
Kód:
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);
)
)
Výstup:
3. Třídění sady
Při třídění kolekce 'Set' pomocí výše uvedeného způsobu řazení (array_name) existují 3 základní pravidla:
-
- Převeďte sadu do seznamu.
- Seřadit seznam pomocí metody řazení (array_name).
- Převeďte výsledný seřazený seznam zpět na Set.
Kód:
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);
)
)
Výstup:
4. Seřadit mapu
Mapa kolekce v Javě je kombinací klíče a hodnoty, takže třídění lze provádět oběma způsoby, buď pomocí klíče, nebo podle hodnoty.
- Seřadit mapu podle klíče: Podívejme se níže uvedený příklad třídění mapy podle klíče.
Kód:
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);
)
)
Výstup:
Jedním z nejjednodušších způsobů třídění prvků Mapy podle klíčů je přidání netříděných mapových prvků do TreeMapu. TreeMap automaticky třídí prvky ve vzestupném pořadí Hash Keys. Ačkoli collection.sort () lze také použít k tomu samému, je to poněkud složité a musí být dobře kódováno.
- Seřadit mapu podle hodnoty: Níže je uveden příklad toho, jak lze třídit v mapě pomocí hodnoty.
Kód:
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()));
Výstup:
Ve výše uvedeném příkladu třídění mapy podle hodnoty jsme nejprve nastavili záznamy pomocí metody map.entrySet () a poté tok těchto záznamů pomocí metody stream (), zavolali seřazené pole pomocí metody sort () porovnáním podle hodnoty v pár. pro každý řádek () se používá k procházení proudu k vytvoření výsledku.
5. Srovnatelné
Srovnatelné je Rozhraní a činí třídy srovnatelnými s jeho případy.
Pro porovnání dvou instancí stejné třídy musí být implementováno srovnatelné rozhraní a musí být přepsána metoda CompareTo (). Třídy, které implementují toto rozhraní, jeho seznam objektů, jsou automaticky tříděny pomocí metody Collections.sort () a Arrays.sort ().
Kód:
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);
Výstup:
Závěr
Výše jsou vysvětleny metody třídění v Javě, které se v Javě používají pro více scénářů polí a sbírek. Programátor musí mít na paměti, jak by měla být použita metoda sort () pro různé typy kolekce. U Java 8 lze třídění provádět také pomocí Lambdas pro implementaci rozhraní Comparator, což usnadňuje třídění. Ačkoli je trochu obtížné je všechny naučit, může být snadné s nimi pracovat, pokud jsou všechny základní pojmy Java, zejména datové proudy, pole a kolekce, jasné. Přestože jsou třídění Algoritmy stále zelené a lze je snadno implementovat do jiných programovacích jazyků Java, mají různou složitost a vestavěné funkce sort () Java usnadňují věci, pokud se základní pojmy učí ze srdce.
Doporučené články
Toto je průvodce tříděním v Javě. Zde diskutujeme o tom, jak se třídění provádí v java a jaké typy třídění v java s různými kódy a výstupy. Další informace naleznete také v dalších souvisejících článcích.
- JComboBox v Javě
- Třídění v C.
- Haldy Seřadit v C.
- Řazení bublin v JavaScriptu
- Co je třídění v C ++?
- Úvod do třídění v PHP
- Haldy Seřadit v Pythonu
- Vložení Seřadit v JavaScriptu
- Hashmap v Javě
- Srovnatelné v příkladu Java | Sběrné rozhraní v Javě