V tomto tutoriálu se pomocí příkladů dozvíme o různých algoritmech poskytovaných rámcem kolekce Java.
Rámec kolekce Java poskytuje různé algoritmy, které lze použít k manipulaci s prvky uloženými v datových strukturách.
Algoritmy v Javě jsou statické metody, které lze použít k provádění různých operací s kolekcemi.
Vzhledem k tomu, že algoritmy lze použít v různých kolekcích, jsou známé také jako obecné algoritmy .
Podívejme se na implementaci různých metod dostupných v rámci kolekce.
1. Řazení pomocí řazení ()
K sort()
řazení prvků se používá metoda poskytovaná rámcem kolekcí. Například,
import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(4); numbers.add(2); numbers.add(3); System.out.println("Unsorted ArrayList: " + numbers); // Using the sort() method Collections.sort(numbers); System.out.println("Sorted ArrayList: " + numbers); ) )
Výstup
Unsorted ArrayList: (4, 2, 3) Sorted ArrayList: (2, 3, 4)
Zde dochází k třídění v přirozeném pořadí (vzestupně). Můžeme však přizpůsobit pořadí řazení sort()
metody pomocí rozhraní komparátoru.
Další informace najdete v části Třídění prostředí Java.
2. Náhodné přehrávání pomocí náhodného přehrávání ()
shuffle()
Způsob sbírek rámce Java se používá k zničit jakékoliv pořadí, přítomné v datové struktuře. Je to pravý opak třídění. Například,
import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Sorted ArrayList: " + numbers); // Using the shuffle() method Collections.shuffle(numbers); System.out.println("ArrayList using shuffle: " + numbers); ) )
Výstup
Řazení ArrayList: (1, 2, 3) ArrayList pomocí shuffle: (2, 1, 3)
Když spustíme program, shuffle()
metoda vrátí náhodný výstup.
Algoritmus míchání se používá hlavně ve hrách, kde chceme náhodný výstup.
3. Rutinní manipulace s daty
V Javě poskytuje kolekce framework různé metody, které lze použít k manipulaci s daty.
reverse()
- obrátí pořadí prvkůfill()
- nahraďte každý prvek v kolekci zadanou hodnotoucopy()
- vytvoří kopii prvků ze zadaného zdroje do cíleswap()
- zamění pozici dvou prvků v kolekciaddAll()
- přidá všechny prvky kolekce do jiné kolekce
Například,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); System.out.println("ArrayList1: " + numbers); // Using reverse() Collections.reverse(numbers); System.out.println("Reversed ArrayList1: " + numbers); // Using swap() Collections.swap(numbers, 0, 1); System.out.println("ArrayList1 using swap(): " + numbers); ArrayList newNumbers = new ArrayList(); // Using addAll newNumbers.addAll(numbers); System.out.println("ArrayList2 using addAll(): " + newNumbers); // Using fill() Collections.fill(numbers, 0); System.out.println("ArrayList1 using fill(): " + numbers); // Using copy() Collections.copy(newNumbers, numbers); System.out.println("ArrayList2 using copy(): " + newNumbers); ) )
Výstup
ArrayList1: (1, 2) Obrácený ArrayList1: (2, 1) ArrayList1 pomocí swap (): (1, 2) ArrayList2 pomocí addALl (): (1, 2) ArrayList1 pomocí fill (): (0, 0) ArrayList2 pomocí copy (): (0, 0)
Poznámka : Při provádění copy()
metody by oba seznamy měly mít stejnou velikost.
4. Hledání pomocí binarySearch ()
binarySearch()
Způsob Java sbírky rámcových hledá zadaný prvek. Vrátí pozici prvku v zadaných kolekcích. Například,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using binarySearch() int pos = Collections.binarySearch(numbers, 3); System.out.println("The position of 3 is " + pos); ) )
Výstup
Pozice 3 je 2.
Poznámka : Kolekce by měla být tříděna před provedením binarySearch()
metody.
Chcete-li se dozvědět více, navštivte Java Binary Search.
5. Složení
frequency()
- vrací počet, kolikrát je prvek v kolekcidisjoint()
- zkontroluje, zda dvě kolekce obsahují nějaký společný prvek
Například,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(2); System.out.println("ArrayList1: " + numbers); int count = Collections.frequency(numbers, 2); System.out.println("Count of 2: " + count); ArrayList newNumbers = new ArrayList(); newNumbers.add(5); newNumbers.add(6); System.out.println("ArrayList2: " + newNumbers); boolean value = Collections.disjoint(numbers, newNumbers); System.out.println("Two lists are disjoint: " + value); ) )
Výstup
ArrayList1: (1, 2, 3, 2) Počet 2: 2 ArrayList2: (5, 6) Dva seznamy jsou disjunktní: true
6. Hledání extrémních hodnot
Metody min()
a max()
rámce kolekce Java se používají k vyhledání minimálních a maximálních prvků. Například,
import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using min() int min = Collections.min(numbers); System.out.println("Minimum Element: " + min); // Using max() int max = Collections.max(numbers); System.out.println("Maximum Element: " + max); ) )
Výstup
Minimální prvek: 1 Maximální prvek: 3