Tässä opetusohjelmassa opitaan erilaisista Java-kokoelmakehyksen tarjoamista algoritmeista esimerkkien avulla.
Java-kokoelmakehys tarjoaa erilaisia algoritmeja, joita voidaan käyttää tietorakenteisiin tallennettujen elementtien käsittelyyn.
Java-algoritmit ovat staattisia menetelmiä, joita voidaan käyttää kokoelmien eri toimintojen suorittamiseen.
Koska algoritmeja voidaan käyttää eri kokoelmissa, nämä tunnetaan myös yleisinä algoritmeina .
Katsotaan, miten kokoelmakehyksessä on käytettävissä erilaisia menetelmiä.
1. Lajittelu lajittelulla ()
sort()
Tarjoaman menetelmän kokoelmista puitteiden järjestämiseen käytetään elementtejä. Esimerkiksi,
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); ) )
Tuotos
Lajittelematon taulukko: (4, 2, 3) Lajiteltu: (2, 3, 4)
Tässä lajittelu tapahtuu luonnollisessa järjestyksessä (nousevassa järjestyksessä). Voimme kuitenkin mukauttaa sort()
menetelmän lajittelujärjestyksen Comparator-käyttöliittymän avulla.
Lisätietoja on Java-lajittelussa.
2. Sekoittaminen satunnaistoiston avulla ()
shuffle()
Menetelmä Java kokoelmien kehystä käytetään tuhoamaan kaikenlaista järjestyksessä läsnä tietoja rakenteessa. Se tekee juuri päinvastoin kuin lajittelu. Esimerkiksi,
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); ) )
Tuotos
Lajiteltu ArrayList: (1, 2, 3) ArrayList käyttäen sekoitusta: (2, 1, 3)
Kun suoritamme ohjelman, shuffle()
menetelmä palauttaa satunnaisen lähdön.
Sekoitusalgoritmia käytetään pääasiassa peleissä, joissa haluamme satunnaislähtöä.
3. Rutiininomainen tietojen käsittely
Java-kokoelmakehys tarjoaa erilaisia menetelmiä, joita voidaan käyttää tietojen käsittelyyn.
reverse()
- kääntää elementtien järjestyksenfill()
- korvaa kaikki kokoelman elementit määritetyllä arvollacopy()
- luo kopion elementeistä määritetystä lähteestä kohteeseenswap()
- vaihtaa kahden elementin sijainnin kokoelmassaaddAll()
- lisää kaikki kokoelman elementit toiseen kokoelmaan
Esimerkiksi,
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); ) )
Tuotos
ArrayList1: (1, 2) Reversed ArrayList1: (2, 1) ArrayList1 swapilla (): (1, 2) ArrayList2 käyttäen addALl (): (1, 2) ArrayList1 käyttäen fill (): (0, 0) ArrayList2 käyttämällä kopio (): (0, 0)
Huomaa : copy()
Menetelmää suoritettaessa molempien luetteloiden tulisi olla samankokoisia.
4. Hakeminen binarySearchilla ()
binarySearch()
Menetelmä Java kokoelmien puitteet etsii määritetyn elementin. Se palauttaa elementin sijainnin määritetyissä kokoelmissa. Esimerkiksi,
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); ) )
Tuotos
3: n sijainti on 2.
Huomaa : Kokoelma tulisi lajitella ennen binarySearch()
menetelmän suorittamista .
Jos haluat tietää enemmän, käy Java Binary Search -sivulla.
5. Koostumus
frequency()
- palauttaa määrän, kuinka monta kertaa elementti on läsnä kokoelmassadisjoint()
- tarkistaa, onko kahdessa kokoelmassa jotain yhteistä elementtiä
Esimerkiksi,
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); ) )
Tuotos
ArrayList1: (1, 2, 3, 2) 2: 2: n määrä ArrayList2: (5, 6) Kaksi luetteloa on disjoint: true
6. Ääriarvojen löytäminen
min()
Ja max()
menetelmiä Java kokoelmia kehystä käytetään löytää minimi ja maksimi elementtejä, vastaavasti. Esimerkiksi,
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); ) )
Tuotos
Vähimmäisosa: 1 Suurin osa: 3