V tomto tutoriále sa pomocou príkladov dozvieme o rôznych algoritmoch poskytovaných rámcom zbierok Java.
Rámec zbierok Java poskytuje rôzne algoritmy, ktoré možno použiť na manipuláciu s prvkami uloženými v dátových štruktúrach.
Algoritmy v Jave sú statické metódy, ktoré možno použiť na vykonávanie rôznych operácií so zbierkami.
Pretože algoritmy môžu byť použité v rôznych zbierkach, sú známe aj ako všeobecné algoritmy .
Pozrime sa na implementáciu rôznych metód dostupných v rámci kolekcií.
1. Triedenie pomocou sort ()
Na sort()
triedenie prvkov sa používa metóda, ktorú poskytuje rámec kolekcií. Naprí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ýkon
Nezoradený zoznam polí: (4, 2, 3) Zoradený zoznam polí: (2, 3, 4)
Triedenie tu prebieha v prirodzenom poradí (vzostupne). Poradie triedenia sort()
metódy však môžeme upraviť pomocou rozhrania komparátora.
Ak sa chcete dozvedieť viac, navštívte Triedenie Java.
2. Náhodné miešanie pomocou náhodného výberu ()
shuffle()
Spôsob zbierok rámca Java sa používa na zničiť akékoľvek poradie, prítomné v dátovej štruktúre. Je to pravý opak triedenia. Naprí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ýkon
Zoradené ArrayList: (1, 2, 3) ArrayList pomocou náhodného výberu: (2, 1, 3)
Keď spustíme program, shuffle()
metóda vráti náhodný výstup.
Algoritmus miešania sa používa hlavne v hrách, kde chceme náhodný výstup.
3. Rutinná manipulácia s údajmi
V prostredí Java poskytuje kolekčný rámec rôzne metódy, ktoré možno použiť na manipuláciu s údajmi.
reverse()
- obráti poradie prvkovfill()
- nahraďte každý prvok v zbierke zadanou hodnotoucopy()
- vytvorí kópiu prvkov zo zadaného zdroja do cieľaswap()
- zamení pozíciu dvoch prvkov v zbierkeaddAll()
- pridá všetky prvky kolekcie do inej kolekcie
Naprí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ýkon
ArrayList1: (1, 2) Obrátený ArrayList1: (2, 1) ArrayList1 pomocou swapu (): (1, 2) ArrayList2 pomocou addALl (): (1, 2) ArrayList1 pomocou fill (): (0, 0) ArrayList2 pomocou copy (): (0, 0)
Poznámka : Pri vykonávaní copy()
metódy by mali byť oba zoznamy rovnakej veľkosti.
4. Vyhľadávanie pomocou binarySearch ()
binarySearch()
Spôsob Java zbierky rámcových hľadá zadaný prvok. Vráti pozíciu prvku v zadaných kolekciách. Naprí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ýkon
Pozícia 3 je 2.
Poznámka : Zbierka by mala byť pred vykonaním binarySearch()
metódy triedená .
Ak sa chcete dozvedieť viac, navštívte Java Binary Search.
5. Zloženie
frequency()
- vráti počet výskytov prvku v kolekciidisjoint()
- skontroluje, či dve zbierky obsahujú nejaký spoločný prvok
Naprí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ýkon
ArrayList1: (1, 2, 3, 2) Počet 2: 2 ArrayList2: (5, 6) Dva zoznamy sú disjunktné: true
6. Hľadanie extrémnych hodnôt
Na vyhľadanie minimálnych a maximálnych prvkov sa používajú metódy min()
a max()
rámca kolekcie Java. Naprí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ýkon
Minimálny prvok: 1 Maximálny prvok: 3