Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.

Lignende præsentationer


Præsentationer af emnet: "Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt."— Præsentationens transcript:

1 Collectionklasser Klassifikation og anvendelse

2 dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt skal der bruges en objektreference (en variabel) –for at holde fast i 10.000 objekter skal der bruges 10.000 objektreferencer... Collections –en særlig slags objekter der kan opbevare (referencer til) objekter java.util –en pakke der bl.a. indeholder klasserne i Javas såkaldte collection framework

3 dIntProg, F08Collectionklasser.3 Containerklasser i Java Containerklasser –antag at man skal repræsen- tere et kartotek over studeren- de på dette kursus –der er behov for en klasse der kan modellere begrebet stu- dent –der er også behov for et sær- ligt objekt der kan opbevare student-objekterne –i Java findes en række forskel- lige collectionklasser –colectionklasserne er organi- seret i et klassifikationshierarki HashSet impl Set TreeSet impl SortedSet ArrayList impl List LinkedList impl List HashMap impl Map TreeMap impl SortedMap Interfaces (specifikation) Klasser (implementation) HVADHVORDANHVADHVORDAN

4 dIntProg, F08Collectionklasser.4 Forskellige containere Collection –samlebegreb for Set og List Set –uordnet samling objekter SortedSet –sorteret samling objekter List –ordnet samling objekter (rækkefølgen har betydning) –0, 1,..., size()-1 Map –uordnet mængde af par SortedMap –sorteret mængde af par { 4, 5, 1, 7 }  { 7, 5, 1, 4 } { 1, 4, 5, 7 } [ 4, 5, 1, 7 ]  [ 7, 5, 1, 4 ] { (”gigantisk”, ”gigantic”), (”abe”, ”monkey”) } { (”abe”, ”monkey”), (”gigantisk”, ”gigantic”) } 0 1 2 3

5 dIntProg, F08Collectionklasser.5 List, et forkert eksempel List l= new ArrayList (); l.add(4); l.add(5); l.add(1); l.add(7); l: 0 1 2 3 size() = 4 4 5 1 7

6 dIntProg, F08Collectionklasser.6 Collection List –generelt interface for lister (sekvenser) af objekter af typen E public interface List { boolean add(E o); void add(int index, E element); E get(int index); boolean contains (Object o); boolean isEmpty(); Iterator iterator(); boolean remove(Object o); int size();... } Se JavaDoc...

7 dIntProg, F08Collectionklasser.7 Eksempel: Liste af personer public void testMethod1() { Person tp; List l= new ArrayList (); tp= new Person( "Bruce Springsteen", 57 ); l.add(tp); tp= new Person( "Paul McCartney ", 65 ); l.add(tp); tp= new Person( "Michael Caspersen", 46 ); l.add(tp); }

8 dIntProg, F08Collectionklasser.8 Objektmodel for personeksempel l: ArrayList 0 1 2 size() = 3 age: name: ”Bruce Springsteen” 57 age: name: ”Paul McCartney” 65 age: name: ”Michael Caspersen” 46

9 dIntProg, F08Collectionklasser.9 Gennemløb med udvidet for-løkke public void testMethod1() { Person tp; List l= new ArrayList (); tp= new Person( "Bruce Springsteen", 57 ); l.add(tp); tp= new Person( "Paul McCartney ", 65 ); l.add(tp); tp= new Person( "Michael Caspersen", 46 ); l.add(tp); // for alle personer p i l... for ( Person p : l ) { if ( p.isOld() ) { System.out.println(p); }

10 dIntProg, F08Collectionklasser.10 Wrapperklasser og autoboxing Javas containerklasser kan kun indeholde objekter Hvad gør man hvis man har brug for en liste af værdier fra en primitiv type, f.eks. int? Wrapperklasser –int Integer –double Double –boolean Boolean –... List l; l= new ArrayList (); l.add(7); int x= l.get(0); Integerint autounboxing autoboxing l: 7 x: 7 intInteger ArrayList

11 dIntProg, F08Collectionklasser.11 List, det rigtige eksempel List l= new ArrayList (); l.add(4); l.add(5); l.add(1); l.add(7); l: 0 1 2 3 size() = 4 4 5 1 7

12 dIntProg, F08Collectionklasser.12 Eksempel: gennemsnitsalder /** * return the average age of the people in list persons */ private int averageAge(List persons) { ? } Specifikation (hvad)

13 dIntProg, F08Collectionklasser.13 Implementation (1) /** * return the average age of the people in list persons */ private int averageAge(List persons) { if ( persons.isEmpty() ){ // case 1 } else { // case 2 } Implementation (hvordan)

14 dIntProg, F08Collectionklasser.14 Implementation (2) /** * return the average age of the people in persons */ private int averageAge(List persons) { if ( persons.size() == 0 ){ return 0; } else { return ageSum(persons) / persons.size(); } /** * return the sum of the age of the people in persons */ private int ageSum(List persons) { ? }

15 dIntProg, F08Collectionklasser.15 Implementation (3) /** * return the sum of the age of the people in persons */ private int ageSum(List persons) { int s= 0; // accumulate the sum of... in variable s return s; }

16 dIntProg, F08Collectionklasser.16 Implementation (4) /** * return the sum of the age of the people in persons */ private int ageSum(List persons) { int s= 0; for (Person p : persons) { s= s + p.getAge(); } return s; }


Download ppt "Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt."

Lignende præsentationer


Annoncer fra Google