Programmeren in Java/Collections: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
kGeen bewerkingssamenvatting
DimiC88 (overleg | bijdragen)
Inhou over Maps en Lists verhuist naar hun respectievelijke paginas.
Regel 1:
{{Navigatie
|Boek=Programmeren in Java
|vorige=Arrays
|huidige=Collections
|volgende=Exceptions
}}
{{Programmeren in Java}}
Een '''collectie''' is een verzameling van objecten (geen primitieve datatypes) die:
Regel 19 ⟶ 13:
** ''SortedMap'' met sleutels in stijgende volgorde: TreeMap
 
<!--fail-safe iterator -->
 
==voorbeelden==
===ArrayList===
====integers====
{{Code|
| Taal=Java
| Titel=RijLijst.java
| Code=<syntaxhighlight lang=java>
import java.util.*;
public class RijLijst{
public static void main(String[] args){
ArrayList lijstA = new ArrayList(); //met expliciete typecasting
lijstA.add(0,new Integer(125));
lijstA.add(1,new Integer(144));
lijstA.add(2,new Integer(255));
lijstA.add(3,new Integer(196));
int getalA = ((Integer)lijstA.get(1)).intValue();
System.out.println("Het tweede getal van de eerste reeks is: " + getalA);
 
ArrayList<Integer> lijstB = new ArrayList<Integer>(); //zonder typecasting en zonder volgnummer
lijstB.add(225);
lijstB.add(244);
lijstB.add(355);
lijstB.add(296);
int getalB = lijstB.get(2);
System.out.println("Het derde getal van de tweede reeks is: " + getalB);
}
}
</syntaxhighlight>
}}
De tweede mogelijke schrijfwijze zonder typecasting is een stuk eenvoudiger.
<pre>
Het tweede getal van de eerste reeks is: 144
Het derde getal van de tweede reeks is: 355
</pre>
Opgelet: de objecten zijn immutible, wat betekent dat de garbage collector veel objecten zal moeten weggooien als ermee gerekend wordt. Daarvoor hevel je de waarde beter eerst over naar echte integers.
 
====Strings====
Op dezelfde manier kan je Strings verwerken:
{{Code|
| Taal=Java
| Titel=personen.java
| Code=<syntaxhighlight lang=java>
import java.util.*;
public class Personen{
public static void main(String[] args){
ArrayList<String> personen = new ArrayList<String>();
personen.add("Klaas Vaak");
personen.add("Het Zandmannetje");
personen.add("Sint-Niklaas");
personen.add("Sint-Maarten");
personen.add("Boe Man");
System.out.println("Aantal=" + personen.size());
 
for(int i = 0;i<personen.size();i++){ //gewone for-loop
System.out.print((i+1) + ". " + personen.get(i) + "\t");
}
System.out.println();
Iterator it = personen.iterator(); //d.m.v. een iterator
while(it.hasNext()){
System.out.print(it.next() + "\t");
}
System.out.println();
 
for(String p : personen){ //enhanced for-loop
System.out.print(p + "\t");
}
}
}
</syntaxhighlight>
}}
Door middel van het volgnummer, kan je een bepaald element uit de array kiezen. Wil je ze gewoon overlopen, dan kan je (bij alle soorten collections) gebruik maken van de universele Iterator.
<pre>
Aantal=5
1. Klaas Vaak 2. Het Zandmannetje 3. Sint-Niklaas 4. Sint-Maarten 5. Boe Man
Klaas Vaak Het Zandmannetje Sint-Niklaas Sint-Maarten Boe Man
Klaas Vaak Het Zandmannetje Sint-Niklaas Sint-Maarten Boe Man
</pre>
 
===HashMap===
{{Code|
| Taal=Java
| Titel=Main.java
| Code=<syntaxhighlight lang=java>
import java.util.*;
public class Main {
public static void main(String[] args){
HashMap<String, String> steden = new HashMap<String, String>();
steden.put("9000","Gent");
steden.put("1000","Brussel");
steden.put("1011 AA","Ruijterkade (Amsterdam)");
 
Iterator it = steden.keySet().iterator();
 
while(it.hasNext()) {
String postcode = (String)it.next();
String stad = steden.get(postcode);
System.out.println(stad + " heeft postcode " + postcode + ".");
}
}
}
</syntaxhighlight>
}}
De volgorde is niet volgens postcode, maar volgens de hash-waarde van de postcode. Deze is moeilijk te voorspellen, en daarom kan je ze als willekeurig beschouwen.
<pre>
Brussel heeft postcode 1000.
Gent heeft postcode 9000.
Ruijterkade (Amsterdam) heeft postcode 1011 AA.
</pre>
 
{{sub}}
 
===TreeMap===
{{Code|
| Taal=Java
| Titel=Main.java
| Code=<syntaxhighlight lang=java>
import java.util.Map;
import java.util.TreeMap;
 
public class Main {
public static void main(String[] args) {
Map <String, Kind> myMap = new TreeMap<>();
myMap.put("Lukas", new Kind("Lukas",5,1.20));
myMap.put("Luuk", new Kind("Luuk",8,1.00));
myMap.put("Sandra", new Kind("Sandra",3,0.60));
myMap.put("Barbara", new Kind("Barbara",5,1.10));
myMap.put("Sandra", new Kind("Sandra",10,1.28));
 
for (Map.Entry<String, Kind> stringKindEntry : myMap.entrySet()) {
System.out.println(stringKindEntry);
}
}
}
</syntaxhighlight>
}}
Een TreeMap is een geordende en gesorteerde Map die entries in een boomstructuur bewaard. Deze entries worden automatisch gesorteerd op key dus de key moet Comparable zijn.
<pre>
Barbara=Barbara (5j) is 1.1m groot
Lukas=Lukas (5j) is 1.2m groot
Luuk=Luuk (8j) is 1.0m groot
Sandra=Sandra (10j) is 1.28m groot
</pre>
 
{{sub}}
 
{{Navigatie
|Boek=Programmeren in Java
|vorige=Arrays
|huidige=Collections
|volgende=Exceptions
}}
 
[[en:Java Programming/Collections]]
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.