De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties.

Verwante presentaties


Presentatie over: "Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties."— Transcript van de presentatie:

1 Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties

2 Internetapplicaties - IV Collecties2 Boeken/tutorials:  Beginning JSP Web Development, Wrox  Vooral hfdst. 8  Officiële java documentatie 

3 Internetapplicaties - IV Collecties3 Doelstelling  Geavanceerde java-klassen en java- taalconstructies kunnen gebruiken, voor zover nodig in de praktijk, in het bijzonder i.v.m. JSP-internetapplicaties.  De officiële Javadocumentatie leren gebruiken

4 Internetapplicaties - IV Collecties4 Inhoudstafel  Collecties  Interfaces  Verzamelingen (Set interface)  Lijsten (List interface)  Mappings (Map interface)  Klassen  ArrayList  Doorlopen van een ArrayList (Iterators)  Sorteren  Comparable  Hashmap

5 Internetapplicaties - IV Collecties5 Enkele Interfaces en klassen (officiële indeling van Sun)  Collection interface  Set interface  HashSet, TreeSet  List interface  ArrayList, Vector*, Stack*, LinkedList  Map interface  AbstractMap interface (sub-interface van Map)  HashMap, WeakHashMap, TreeMap, HashTable* *=verouderd

6 Internetapplicaties - IV Collecties6 Verzamelingen (Set interface)  Eigenschappen:  Geen volgorde voorzien (default)  Geen dubbels toegelaten  N.B.: voldoen aan klassieke eigenschappen van verzamelingen zoals geleerd in de lagere school: {1,2,3,3}=={1,2,3}=={3,1,2}

7 Internetapplicaties - IV Collecties7 Lijsten (List interface)  Eigenschappen:  Wel volgorde voorzien  Wel dubbels toegelaten  N.B.: voldoen aan klassieke eigenschappen van n-tupels (koppels, 3-tallen, 4-tallen) zoals geleerd in de lagere school: (1,2,3,3)≠(1,2,3) en (1,2,3)≠(1,3,2)

8 Internetapplicaties - IV Collecties8 Mappings ( Map interface)  Objecten worden in koppels bewaard.  Eén object is de unieke sleutel (key)  Het ander object is de waarde (value)  Met behulp van de sleutel, kun je een waarde terugvinden  N.B.: Je kunt het voorstellen als een verzameling van koppels {(“A0001”,”Jefke”), (“B0001”,”Louis”), (“B0001”,”Francine”),…}

9 Internetapplicaties - IV Collecties9 ArrayList  Is een klasse die de List interface implementeert  Dit betekent dat bepaalde methode-namen van de List interface van een implementatie zijn voorzien.  We vertrekken weerom van een voorbeeldje dat we achteraf van opmerkingen voorzien.  N.B. 1 Voor de duidelijkheid hoor je eigenlijk elk statement op een nieuwe lijn te beginnen.  N.B. 2 Voor grotere systemen hoor je elke identifier een lange betekenisvolle naam te geven.

10 Internetapplicaties - IV Collecties10 ArrayList: Voorbeeldje  U creëert folder en bestand: c:\jakarta-tomcat \webapps\ hfdst4\classes\be\scvobirm\hulp\ hfdst4\classes\be\scvobirm\hulp\ Leerling.java Leerling.java  U tikt de java-code die volgt in dit bestand in:

11 Internetapplicaties - IV Collecties11 Leerling.java (deel 1) package be.scvobirm.hulp; import java.util.*; public class Leerling{ public Leerling(String voornaam, String tel){ this.voornaam = voornaam; this.voornaam = voornaam; this.tel = tel; this.tel = tel;} private String voornaam; public String getVoornaam(){ return voornaam; } private String tel; public String getTel(){return tel;}

12 Internetapplicaties - IV Collecties12 Leerling.java (deel 2) public static void main(String[] args){ Leerling p1, p2; // excuseer: cryptische namen Leerling p1, p2; // excuseer: cryptische namen List pot; List pot; p1 = new Leerling("Piet"," "); p1 = new Leerling("Piet"," "); p2 = new Leerling("Jef"," "); p2 = new Leerling("Jef"," "); pot = new ArrayList(); pot.add(p1); pot.add(p2); pot = new ArrayList(); pot.add(p1); pot.add(p2); printLeerlingen(pot); printLeerlingen(pot);} public static void printLeerlingen(List list){ Leerling pp; Leerling pp; for(int i=0 ; i < list.size() ; i++ ){ for(int i=0 ; i < list.size() ; i++ ){ pp = (Leerling) list.get(i); pp = (Leerling) list.get(i); System.out.println("Voornaam: "+ pp.getVoornaam()); System.out.println("Voornaam: "+ pp.getVoornaam()); }}}

13 Internetapplicaties - IV Collecties13 Compilatie naar bytecode  Compilatie in een dosbox: c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>javac be\scvobirm\hulp\Leerling.java c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>javac be\scvobirm\hulp\Leerling.java  Uitvoeren van de bytecode: c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>java be.scvobirm.hulp.Leerling c:\jakarta-tomcat \webapps\hfdst4\WEB- INF\classes>java be.scvobirm.hulp.Leerling

14 Internetapplicaties - IV Collecties14 Resultaat

15 Internetapplicaties - IV Collecties15 Opmerkingen  import java.util.*; betekent: alle klassen in dit pakket. We haddden ook ArrayList ipv * kunnen importeren.  List pot; pot = new ArrayList(); pot = new ArrayList(); pot ondersteunt de List interface Maar er wordt een ArrayList object aan toegekend. Nu kan pot alleen de methoden van ArrayList die ook in List te vinden zijn, oproepen !! pot is nu een leeg ArrayList-object

16 Internetapplicaties - IV Collecties16 Opmerkingen  p1 = new Leerling("Piet"," "); p1 wordt gecreëerd met al zijn attributen als parameter. Er zijn geen public setters voorzien in Leerling.java  pot.add(p1); pot.add(p2);  Een List-object kan als elementen objecten van het type Object bevatten. Leerling is een subklasse van Object.  add behoort tot de List interface. Het voegt het object in de parameter toe aan de lijst.  p1 is een Leerling en dus een Object en mag dus toegevoegd worden.

17 Internetapplicaties - IV Collecties17 Opmerkingen  for(int i=0 ; i < list.size() ; i++)  size() behoort ook to de List interface. Het geeft het aantal elementen in de lijst.  pp = (Leerling) list.get(i);  get(i) geeft het elemeten op positie i terug. (tellen vanaf 0). get(int) behoort ook tot de List interface.  Collecties bevatten objecten van de klasse Object. Ze moeten geDOWNCAST worden naar specifiekere subklassen.  list.get(i) moet gedowncast worden naar Leerling alvorens ze kan toegekend worden aan pp, die van de klasse Leerling is.

18 Internetapplicaties - IV Collecties18 ArrayList: extra methoden // Deze code komt NIET uit het voorbeeldje: ArrayList ar = new ArrayList; ar.add(“A”); // pos 0 ar.add(“B”); // pos 1 // -> A, B ar.add(1,“C”); // “B” schuift nu op naar pos 2 // ->A, C, B Ar.remove(0); // -> C, B

19 Internetapplicaties - IV Collecties19 Iteratoren: doorlopen van lijsten … public static void printMetIterator(List list){ Iterator iterator = list.iterator(); Iterator iterator = list.iterator(); Leerling pp; Leerling pp; while(iterator.hasNext()){ while(iterator.hasNext()){ pp = (Leerling) iterator.next(); pp = (Leerling) iterator.next(); System.out.println("Voornaam: "+ pp.getVoornaam()); System.out.println("Voornaam: "+ pp.getVoornaam()); }}

20 Internetapplicaties - IV Collecties20 Opmerkingen  Iterator iterator = list.iterator();  Iterator is een interface. De iterator() method geeft een concreet iterator-object terug waarmee de lijst kan doorlopen worden.  Een iterator houdt intern een ‘pointer’ naar het ‘huidige’ object in de lijst bij samen met een referentie naar de lijst in kwestie. De pointer start juist voor het eerste element.  pp = (Leerling) iterator.next();  next(): Verschuift de ‘pointer’ 1 positie verder en geeft het object dat daar staat terug. geeft het object dat daar staat terug.  while( iterator.hasNext() )  hasNext(): geeft true als next() een object kan teruggeven.  Meer info:

21 Internetapplicaties - IV Collecties21 Sorteren m.b.v. Comparable  Om te kunnen sorteren, moeten we weten waarop we willen sorteren  Als we de Comparable interface ondersteunen, kunnen we gebruik maken van standaard sorteermethoden, zonder de sortering zelf te schrijven.  Comparable interface bevat:  int CompareTo(Object)  Volgende methods behoren tot Object. Je kunt ze best overschrijven als je van plan bent Comparable te implementeren:  boolean equals(Object)  Int hashCode()

22 Internetapplicaties - IV Collecties22 Comparable interface: te implementeren methoden  int CompareTo(Object o)  Je moet ZELF code schrijven om this met o te vergelijken  Geef 1 terug als this groter is dan o  Geef -1 terug als this kleiner is dan o  Geef 0 terug als ze ‘gelijk’ zijn  boolean equals(Object o)  Spreekt voor zich. Geef true asa this is ‘gelijk’ aan o  Hoort strikt genomen NIET tot Comparable wel tot Object  int hashCode()  Genereer unieke code  Hoort strikt genomen NIET tot Comparable, wel tot Object

23 Internetapplicaties - IV Collecties23 Comparable: uitbreiding voorbeeldje public class Leerling implements Comparable{ … public int compareTo(Object o){ Leerling leerling = (Leerling) o; Leerling leerling = (Leerling) o; return ( this.getVoornaam().compareTo(leerling.getVoornaam()) ); return ( this.getVoornaam().compareTo(leerling.getVoornaam()) );} public boolean equals(Object o){ if (! (o instanceof Leerling) ) return false; return false; Leerling leerling = (Leerling) o; Leerling leerling = (Leerling) o; return ( this.getVoornaam().equals(leerling.getVoornaam()) ); } public int hashCode(){ return this.getVoornaam().hashCode(); return this.getVoornaam().hashCode();}

24 Internetapplicaties - IV Collecties24 Comparable: uitbreiding voorbeeldje (vervolg) public static void main(String[] args){ Leerling p1, p2; List pot; Leerling p1, p2; List pot; p1 = new Leerling("Piet"," "); p1 = new Leerling("Piet"," "); p2 = new Leerling("Jef"," "); p2 = new Leerling("Jef"," "); pot = new ArrayList(); pot.add(p1); pot.add(p2); pot = new ArrayList(); pot.add(p1); pot.add(p2);… if ( p1.compareTo(p2) > 0) if ( p1.compareTo(p2) > 0) System.out.println(p1.getVoornaam() + System.out.println(p1.getVoornaam() + " komt na " + p2.getVoornaam() ); " komt na " + p2.getVoornaam() ); if ( p1.compareTo(p2) < 0) if ( p1.compareTo(p2) < 0) System.out.println(p1.getVoornaam() + " komt voor " + p2.getVoornaam() ); " komt voor " + p2.getVoornaam() );}

25 Internetapplicaties - IV Collecties25 Opmerkingen  (o instanceof Leerling) Test of o kan toegekend worden aan een variabele van type Leerling. Als o Leerling of een subklasse van Leerling heeft, dan resulteert de expressie in true, anders In false.  Bij equals() en hashCode() delegeren we gewoon naar de voornaam datafield.

26 Internetapplicaties - IV Collecties26 Sorteren via de Collections hulpklasse  Collections is een hulpklasse die interessante static functies bevat, o.a. om lijsten mee te sorteren.  Collections.sort(List list) heeft blijkbaar een parameter die de List interface ondersteunt. ALLE elementen in de lijst moeten de Comparable interface ondersteunen.

27 Internetapplicaties - IV Collecties27 Collections.sort: uitbreiding voorbeeldje public static void main(String[] args){ … Collections.sort(pot); Collections.sort(pot); System.out.println( System.out.println( "Nu is alles gesorteerd"); "Nu is alles gesorteerd"); printMetIterator(pot); printMetIterator(pot);}

28 Internetapplicaties - IV Collecties28 HashMap  Is een klasse die de Map interface implementeert  Dit betekent dat bepaalde methode-namen van de Map interface van een implementatie zijn voorzien.  get(Object key) getObject getObject  put(Object key, Object value) putObject putObject  …  We vertrekken weerom van een voorbeeldje dat we achteraf van opmerkingen voorzien. (zie volgende les)


Download ppt "Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties."

Verwante presentaties


Ads door Google