java.util.Collection - pagrindinis kolekcijų interfeisas. Žymi elementų rinkinį ir įgyvendina java.util.Iterable - kolekcijas galima naudoti foreach sakinyje.
java.util.List - kolekcija sauganti surikiuotus elementus (sąrašas)
java.util.Set - kolekcija sauganti unikalius elementus (aibė)
java.util.SortedSet - kolekcija sauganti surūšiuotus unikalius elementus (surūšiuota aibė)
Foreach
ArrayList<String> eilutes = new ArrayList<>();
for (String eilute: eilutes) {
System.out.println(eilute);
}
java.util.List - kolekcija sauganti surikiuotus elementus (sąrašas)
java.util.Set - kolekcija sauganti unikalius elementus (aibė)
java.util.SortedSet - kolekcija sauganti surūšiuotus unikalius elementus (surūšiuota aibė)
Foreach
ArrayList<String> eilutes = new ArrayList<>();
for (String eilute: eilutes) {
System.out.println(eilute);
}
Pagrindinės List realizacijos
java.util.ArrayList - realizacija paremta dinamiškai augančiu masyvu
- Greitesnė iteracija
- Kompaktiškas
- Greitesnis iterpimas gale ar arti galo
- Greitesnė prieiga prie n-tojo elemento
java.util.LinkedList - realizacija paremta dvipusiu sąrašu
- Greitesnis įterpimas į sąrašo vidurį
- Greitesnis šalinimas iš sąrašo vidurio
List pavyzdys
List<Integer> skaiciai = new ArrayList<>();
skaiciai.add(4);
skaiciai.add(5);
for (Integer skaicius: skaiciai) {
System.out.println(skaicius);
}
Pagrindinės Set ir Sorted realizacijos
- java.util.Set
- java.util.HashSet - realizacija paremta HashMap
- java.util.SortedSet
- java.util.TreeSet - realizacija paremta TreeMap
java.util.Map
Kolekcija sauganti elementų poras (K, V), kur K raktas pagal kurį galima surasti V.
Pavyzdžiui galime į kolekciją dėti automobilių objektus pagal jų numerį.
Map realizacijos
java.util.HashMap - saugo elementus pagal rakto maišos (hash) funkciją
java.util.LinkedHashMap - saugo elementus kaip ir HashMap, papildomai saugodamas ir elementų tvarką.
Aiški elementų iteracijos tvarka (pagal įdėjimo arba priėjimo tvarką).
java.util.TreeMap - saugo elementus dvejetainiame medyje. Aiški elementų iteracijos tvarka (pagal raktą).
Map pavyzdys
HashMap<Integer, String> skaiciuVardai = new HashMap<>();
skaiciuVardai.put(1, “Vienas”);
skaiciuVardai.put(2, “Du”);
skaiciuVardai.put(3, “Trys”);
System.out.println(skaiciuVardai.get(2));
hashCode() ir equals()
- Visi objektai įgyvendina hashCode() ir equals()
- Pagal nutylėjimą realizacijos paveldimos iš java.lang.Object
- Neteisingos tipiniams naudojimo atvejams
equals()
- Standartinis atsako į klausimą “Ar tai tas pats objektas?” (lyg lyginant su ==)
- Kontraktas sako, kad turėtų atsakyti “Ar tai toks pat objektas?”
- Perrašome, tam kad du tokie patys objektai galėtų būti
- lygūs. Pvz.: sukurkime du skaičiaus objektus:
- Integer penki = new Integer(5);
- Integer kitasPenki = new Integer(5);
- Jei būtų naudojamas standartinis equals(...) objektai nebūtų lygūs
• Paprastai įgyvendinamas lyginant laukų reikšmes.
• IDE paprastai moka sugeneruoti
hashCode()
Panaudojamas HashMap objektų dėliojimui į “kibirus”. Nuo teisingos ir geros realizacijos priklauso ar objektą bus galima teisingai panaudoti kaip HashMap raktą. Pasak equals() lygių metodų hashCode() turi grąžinti vienodą reikšmę.IDE moka sugeneruoti teisingą
Palyginami objektai
- Palyginami objektai gali būti “didesni” ar “mažesni” vieni už kitus (arba “pirmesni” ir “paskesni”)
- Palyginami objektai įgyvendina java.util.Comparable interfeisą.
- Tokie objektai talpinami į sąrašus gali būti išrūšiuojame.
java.util.Comparator
- Intefeisas leidžiantis įgyvendinti rušiavimo tvarkos nustatymo algoritmą nerūšiuojamiems objektams
- Naudojamas TreeSet, TreeMap
Komentarų nėra:
Rašyti komentarą