Algoritmy Java

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 hodnotou
  • copy() - vytvoří kopii prvků ze zadaného zdroje do cíle
  • swap() - zamění pozici dvou prvků v kolekci
  • addAll() - 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 kolekci
  • disjoint() - 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 

Zajímavé články...