V tej vadnici bomo s pomočjo primerov spoznali različne algoritme, ki jih ponuja ogrodje zbirk Java.
Okvir zbirk Java ponuja različne algoritme, s katerimi je mogoče manipulirati z elementi, shranjenimi v podatkovnih strukturah.
Algoritmi v Javi so statične metode, s katerimi lahko izvajamo različne operacije nad zbirkami.
Ker se algoritmi lahko uporabljajo v različnih zbirkah, so ti znani tudi kot generični algoritmi .
Oglejmo si izvajanje različnih metod, ki so na voljo v okviru zbirk.
1. Razvrščanje z uporabo sort ()
Za sort()
razvrščanje elementov se uporablja metoda, ki jo zagotavlja okvir zbirk. Na primer
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); ) )
Izhod
Unsorted ArrayList: (4, 2, 3) Sorted ArrayList: (2, 3, 4)
Tu sortiranje poteka po naravnem vrstnem redu (naraščajoče). Vrstni red razvrščanja sort()
metode pa lahko prilagodimo z vmesnikom Comparator.
Če želite izvedeti več, obiščite razvrščanje Java.
2. Naključno predvajanje s premešavanjem ()
shuffle()
Metoda okviru Java zbirk se uporablja, da se uniči vse vrste naročil trenutno v strukturi podatkov. Deluje ravno nasprotno od razvrščanja. Na primer
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); ) )
Izhod
Razvrščen ArrayList: (1, 2, 3) ArrayList z uporabo naključnega mešanja: (2, 1, 3)
Ko zaženemo program, bo shuffle()
metoda vrnila naključni izhod.
Algoritem za mešanje se uporablja predvsem v igrah, kjer želimo naključni izhod.
3. Redna manipulacija s podatki
V Javi okvir zbirk ponuja različne metode, s katerimi je mogoče manipulirati s podatki.
reverse()
- spremeni vrstni red elementovfill()
- zamenjaj vsak element v zbirki z določeno vrednostjocopy()
- ustvari kopijo elementov iz navedenega vira do ciljaswap()
- zamenja položaj dveh elementov v zbirkiaddAll()
- doda vse elemente zbirke drugi zbirki
Na primer
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); ) )
Izhod
ArrayList1: (1, 2) Obrnjeni ArrayList1: (2, 1) ArrayList1 z uporabo swap (): (1, 2) ArrayList2 z uporabo addALl (): (1, 2) ArrayList1 z uporabo fill (): (0, 0) ArrayList2 z uporabo copy (): (0, 0)
Opomba : Med izvajanjem copy()
metode morata biti oba seznama enake velikosti.
4. Iskanje s pomočjo binarySearch ()
binarySearch()
Metoda Java zbirk okvirnih išče določen element. Vrne položaj elementa v določenih zbirkah. Na primer
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); ) )
Izhod
Položaj 3 je 2.
Opomba : Zbirko je treba razvrstiti pred izvajanjem binarySearch()
metode.
Če želite izvedeti več, obiščite binarno iskanje Java.
5. Sestava
frequency()
- vrne število, kolikokrat je element prisoten v zbirkidisjoint()
- preveri, ali dve zbirki vsebujeta skupni element
Na primer
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); ) )
Izhod
ArrayList1: (1, 2, 3, 2) Število 2: 2 ArrayList2: (5, 6) Dva seznama sta nepovezana: true
6. Iskanje ekstremnih vrednot
Pri min()
in max()
metode okviru Java zbirk se uporablja, da bi našli najnižje in najvišje elementi, oz. Na primer
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); ) )
Izhod
Najmanjši element: 1 Največji element: 3