Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung.

Ähnliche Präsentationen


Präsentation zum Thema: "Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung."—  Präsentation transkript:

1 Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker

2 Java-Intensivkurs WS07/08 Folie 2 Generics class NonGenericBubbleSort{ public void bubbleSort (Integer [] A){ for (int i=0;i<A.length;i++) { for(int j=A.length-1;j>=i+1;j--){ if (A[j].compareTo(A[j-1])<0){//wenn A[j]<A[j-1] swap(A, j, j-1); } }}} //vertauscht A[i] und A[j] public void swap(Integer []A,int i, int j){ Integer temp=A[i]; A[i]=A[j]; A[j]=temp; }} vertausche A[j] & A[j]

3 Java-Intensivkurs WS07/08 Folie 3 Generics class BubbleSorter { public static void main(String[] args) { Integer[] A=new Integer[]{-1,0,4,2,1,0,3}; NonGenericBubbleSort bubbleSorter=new NonGenericBubbleSort(); bubbleSorter.bubbleSort(A); for (Integer element : A) System.out.print(element+" "); } Ausgabe: -1 0 0 1 2 3 4

4 Java-Intensivkurs WS07/08 Folie 4 Generics Ein Sortieralgorithmus kann Elemente beliebiger Datentypen sortieren, sofern diese paarweise vergleichbar sind (auf den Elementen ist eine Ordnungsrelation definiert NonGenericBubbleSort beschränkt sich jedoch nur auf das Sortieren von Integer-Zahlen Wie muss die Implementierung angepasst werden damit Elemente anderer Datentypen sortiert werden können?

5 Java-Intensivkurs WS07/08 Folie 5 Generics Anpassung des Algorithmus für die Sortierung von Float Überladung der bubbelSort-Methode Überladung und Anpassung der swap-Methode public void bubbleSort (Float [] A){ //1. Anpassen //... } public void swap(Float []A,int i, int j){ Float temp=A[i]; A[i]=A[j]; A[j]=temp; } Anpassung der temp- Variable

6 Java-Intensivkurs WS07/08 Folie 6 Generics Wie oft müssen die Methoden bubbleSort() und swap() überladen werden? Für die 7 unterschiedlichen primitiven Datentypen (int, long, double, …) müssten die beiden Methoden jeweils 6 Mal überladen werden -  Die Klasse enthält 14 Methoden, die sich kaum Unterscheiden -Dies ist kein guter Stil einen einfachen Sortieralgorithmus zu implementieren Lösung?? Die Klasse BubbleSort wird als generische Klasse implementiert

7 Java-Intensivkurs WS07/08 Folie 7 Generische Klassen class GenericBubbleSort { public void bubbleSort(T [] A){ for (int i=0;i<A.length;i++) { for(int j=A.length-1;j>=i+1;j--){ if (A[j].compareTo(A[j-1])<0){ swap(A, j, j-1); } } public void swap(T []A,int i, int j){ T temp=A[i]; A[i]=A[j]; A[j]=temp;}} wenn A[j]<A[j-1] Typparameter

8 Java-Intensivkurs WS07/08 Folie 8 Generische Klassen class BubbleSorter { public static void main(String[] args) { GenericBubbleSort bubbleSorter= new GenericBubbleSort (); bubbleSorter.bubbleSort(new Integer[]{-1,0,4,2,1,0,3}); }

9 Java-Intensivkurs WS07/08 Folie 9 Generische Klassen GenericBubbleSort ist eine generische Klasse, die einen nicht näher spezifizierten Datentyps namens T verwendet Alles was über T bekannt ist, ist dass er eine Unterklasseasse von Object ist, und das Comparable- Interface implementiert Die Elemente von T sind daher paarweise vergleichbar

10 Java-Intensivkurs WS07/08 Folie 10 Generische Klassen GenericBubbleSort ist nun eine parametrisierte Klasse Eine Klasse ist generisch, wenn sie so definiert ist, dass sie bei ihrer Instanziierung nicht primitive Datentypen als Parameter erwartet class MyClass { //class body } MyClass myClassObject=new MyClass (); TypeArgument ist eine Abstraktion eines nicht primitiven Datentyps

11 Java-Intensivkurs WS07/08 Folie 11 Generische Klassen GenericBubbleSort bubbleSorter= newGenericBubbleSort (); bubbleSorter.bubbleSort(new Integer[]{-1,0,4,2,1,0,3}); GenericBubbleSort bubbleSorter =new GenericBubbleSort (); bubbleSorter.bubbleSort(new Double[]{-1.2,0.2,- 4.01,2.1,1.2,0.5,3.4}); GenericBubbleSort bubbleSorter =new GenericBubbleSort (); bubbleSorter.bubbleSort(new String[]{"is","genrics","neu"}); //Sortierung von Integer-Zahlen //Sortierung von Double-Zahlen //Sortierung von Strings

12 Java-Intensivkurs WS07/08 Folie 12 Generische Methoden Auch Methoden können als generisch deklariert werden Statt die gesamte Klasse BubbleSort als generisch zu deklarieren, könnte man nur die Methoden bubbleSort() und swap() generisch deklarieren class BubbleSortWithGenericMethods{ public > void bubbleSort(T [] A){ //gleiche Implementierung wie in GenericBubbleSort } //bubbleSort() ist nun generisch

13 Java-Intensivkurs WS07/08 Folie 13 Generische Methoden public > void swap(T []A,int i, int j){ //gleiche Implementierung wie in GenericBubbleSort } BubbleSortWithGenericMethods genricBubbleSorter4= new BubbleSortWithGenericMethods(); genricBubbleSorter4. bubbleSort(new Integer[] {-1,0,4,2,1,0,3}); genricBubbleSorter4. bubbleSort(new Double[] {-1.2,0.2,-4.01,2.1,1.2,0.5,3.4}); genricBubbleSorter4. bubbleSort(new String[] {"is","genrics","neu"}); Die Methode swap ist nun generisch

14 Java-Intensivkurs WS07/08 Folie 14 Generics http://angelikalanger.com/Articles/JavaMagazin/Generic s/GenericsPart1.html http://angelikalanger.com/Articles/JavaMagazin/Generic s/GenericsPart2.html

15 Java-Intensivkurs WS07/08 Folie 15 Collections (Sammlungen) Datenstrukturen Die Effizienz eines Algorithmus hängt sehr eng mit der Wahl der richtigen Datenstruktur zusammen Collections in Java sind Datenstrukturen, die als Container aufgefasst werden können, in denen Objekte gespeichert, verwaltet und manipuliert werden können Den Kern des Collections-Frameworks bilden die sechs Interfaces: Collection, List, Set, SortedSet, Map und SortedMap:

16 Java-Intensivkurs WS07/08 Folie 16 Collections Alle Collections außer den Maps implementieren das Collection-Interface Das Interface stellt u. a. Methoden zum Suchen, Einfügen und Entfernen von Elementen

17 Java-Intensivkurs WS07/08 Folie 17 Das Collection-Interface //Collection-Interface Public interface Collection extends Iterable { int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); boolean equals(Object o); int hashCode(); }

18 Java-Intensivkurs WS07/08 Folie 18 Listen, Mengen & Maps Aufteilung der Collections in 3 Kategorien: Listen (Lists) Mengen (Sets) Tabellen (Maps) Listen sind Sammlungen, die dynamischen Arrays ähneln Ihre Elemente sind geordnet und indiziert

19 Java-Intensivkurs WS07/08 Folie 19 Listen, Mengen & Maps Sets repräsentieren (mathematische) Mengen, die keine Duplikate zulassen Eine Map ist eine Sammlung von Paaren Jedes Paar besteht aus einem eindeutigen Schlüssel und einem zugehörigen Objekt (Wert) Sind vergleichbar mit assoziativen dynamischen Arrays Werden mithilfe von Hash-Strukturen implementiert

20 Java-Intensivkurs WS07/08 Folie 20 Listen, Mengen & Maps Es gibt sortierte und unsortierte bzw. geordnete und nicht geordnete Sets und Maps Mengen- und Map-Elemente sind nicht indiziert

21 Java-Intensivkurs WS07/08 Folie 21 Listen Listen sind vergleichbar mit dynamisch wachsenden Arrays Sind geordnet (sie speichert ihre Elemente in der Reihenfolge, in der sie eingefügt wurden) Jedes Element hat einen Index Die Indizierung fängt, wie bei Arrays, bei 0 an Indexbasierter Zugriff auf Listenelemente ist möglich Das Einfügen und Entfernen von Elementen an beliebiger Stelle in Listen ist möglich Listen können null-Objekte und Duplikate speichern Die Länge einer Liste ist theoretisch unbeschränkt

22 Java-Intensivkurs WS07/08 Folie 22 Listen Beispiele: ArrayList, Vector, Stack, und LinkedList //List-Interface interface List extends Collection { int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); boolean containsAll(Collection c); boolean addAll(Collection c);... }

23 Java-Intensivkurs WS07/08 Folie 23 Listen //List-Interface interface List extends Collection {... boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); boolean equals(Object o); int hashCode(); E get(int index); E set(int index, E element); void add(int index, E element); E remove(int index); int indexOf(Object o); int lastIndexOf(Object o); ListIterator listIterator(); ListIterator listIterator(int index); List subList(int fromIndex, int toIndex); }

24 Java-Intensivkurs WS07/08 Folie 24 ArrayList & Vector java.lang.ArrayList und java.lang.Vector Implementieren das List-Interface Sie unterscheiden sich jedoch darin, dass die Methoden von Vector synchronisiert sind -Mehrere Threads auf einen Vector gleichzeitig zugreifen können ohne die Integrität der Daten zu verletzen Vektoren Thread-sicher (thread-safe) Aufgrund der Synchronisation sind Vektoren langsamer als ArrayLists und sollten daher nur verwendet werden, wenn mehrere Threads auf den Vektor konkurrierend zugreifen sollen Vectors sind keine Vektoren im mathematischen Sinne sondern Listen

25 Java-Intensivkurs WS07/08 Folie 25 ArrayListen & Vector public class ArrayListSample { ArrayList physicalUnits = new ArrayList(); public ArrayListSample(){ physicalUnits.add("Joule"); physicalUnits.add("Pascal"); physicalUnits.add("Volt"); physicalUnits.add("Coulomb"); physicalUnits.add(null); physicalUnits.add("Volt"); physicalUnits.add("Ohm"); physicalUnits.add("Newton"); physicalUnits.add(1,"Celsius"); } //Listen können null- Referenzen //Ein Duplikat

26 Java-Intensivkurs WS07/08 Folie 26 LinkedList //Das Deque-Interface public interface Deque extends Queue { void addFirst(E e); void addLast(E e); boolean offerFirst(E e); boolean offerLast(E e); E removeFirst(); E removeLast(); E pollFirst(); E pollLast(); E getFirst(); E getLast(); E peekFirst(); E peekLast();

27 Java-Intensivkurs WS07/08 Folie 27 LinkedList //Das Deque-Interface boolean removeFirstOccurrence(Object o); boolean removeLastOccurrence(Object o); boolean add(E e); boolean offer(E e); E remove(); E poll(); E element(); E peek(); void push(E e); E pop(); boolean remove(Object o); boolean contains(Object o); public int size(); Iterator iterator(); Eine LinkedList ist eine doppelt verkettete Liste

28 Java-Intensivkurs WS07/08 Folie 28 LinkedList boolean add(E e) und boolean offer(E e): Fügen das Element e am Ende der Liste ein E remove() und E poll(): Entfernen das erste Element in der Liste und geben es zurück E element() und E peek(): Liefern das erste Element in der Liste ohne es zu entfernen Beispiel: http://www.roseindia.net/java/jdk6/LinkedListExample.shtml

29 Java-Intensivkurs WS07/08 Folie 29 Mengen Eine Menge ist eine in der Regel ungeordnete Sammlung von Elementen, die keine Duplikate zulässt Bevor ein Element in eine Menge eingefügt werden kann, wird zunächst überprüft, ob es bereits darin enthalten ist Erst wenn sichergestellt ist, dass es nicht vorhanden ist, wird es in die eingefügt

30 Java-Intensivkurs WS07/08 Folie 30 Mengen Im Gegensatz zu Listen ist bei Mengen ein indexbasierter Zugriff auf die Elemente nicht möglich Es gibt sortierte und unsortierte Mengen Die wichtigsten Mengen-Collections in Java sind HashSet, TreeSet und LinkedHashSet

31 Java-Intensivkurs WS07/08 Folie 31 HashSet Speichert die Elemente in einer Hashtabelle und lässt das Einfügen von null-Objekten, jedoch nicht von Duplikaten zu Die Elemente eines HashSet sind nicht geordnet Ein HashSet verlässt sich auf die Implementierung der hashCode()-Methode ihrer Objekte Dies ist die Methode, die HashSet bei der Suche nach Duplikaten aufruft

32 Java-Intensivkurs WS07/08 Folie 32 HashSet public class HashSetSample { Set hashSet=new HashSet(); public HashSetSample() { for(int i=5;i>=0;i--) hashSet.add(i*i); hashSet.add(3.5f); hashSet.add(null); } public static void main(String... args) { HashSetSample hashSetSample=new HashSetSample(); System.out.println(hashSetSample.hashSet); }} Ausgabe: [null, 0, 1, 16, 3.5, 4, 25, 9] null-Objekte sind erlaubt

33 Java-Intensivkurs WS07/08 Folie 33 LinkedHashSet Hat die gleichen Eigenschaften wie ein HashSet Unterschied: LinkedHashSet sind geordnet

34 Java-Intensivkurs WS07/08 Folie 34 TreeSet Speichert seine Elemente in einem Rot-Schwarz-Baum Lässt weder Duplikate noch null-Objekte zu Erweitert Set um zahlreiche Methoden für den Umgang mit sortierten Daten: interface SortedSet extends Set { Comparator comparator(); SortedSet subSet(E fromElement, E toElement); SortedSet headSet(E toElement); SortedSet tailSet(E fromElement); E first(); E last(); }

35 Java-Intensivkurs WS07/08 Folie 35 TreeSet public class TreeSetSample { TreeSet sortedSet = new TreeSet (); public TreeSetSample() { sortedSet.add(new Integer(2)); sortedSet.add(new Integer(7)); sortedSet.add(new Integer(1)); //sortedSet.add(null); sortedSet.add(new Integer(-1)); sortedSet.add(new Integer(0)); sortedSet.add(new Integer(-1)); sortedSet.add(new Integer(5)); } null-Objekte sind erlaubt

36 Java-Intensivkurs WS07/08 Folie 36 TreeSet public static void main(String... args) { TreeSetSample treeSetSample = new TreeSetSample(); System.out.print("sortedSet: "); for (Integer element : treeSetSample.sortedSet) System.out.print(element + " "); System.out.println(); System.out.println("sortedSet.first(): "+ treeSetSample.sortedSet.first()); System.out.println("sortedSet.last(): "+ treeSetSample.sortedSet.last()); System.out.println("sortedSet.subSet(-1, 5): "+ treeSetSample.sortedSet.subSet(-1, 5)); System.out.println("sortedSet.headSet(2): "+ treeSetSample.sortedSet.headSet(2)); System.out.println("sortedSet.tailSet(2): "+ treeSetSample.sortedSet.tailSet(2)); } Ausgabe: sortedSet: -1 0 1 2 5 7 sortedSet.first(): -1 sortedSet.last(): 7 sortedSet.subSet(-1, 5): [-1, 0, 1, 2] sortedSet.headSet(2): [-1, 0, 1] sortedSet.tailSet(2): [2, 5, 7]

37 Java-Intensivkurs WS07/08 Folie 37 Tabellen (Maps) Eine Map ist eine Datenstruktur, die Schlüssel/Objekt- Paare speichert Die Schlüssel einer Map müssen eindeutig sein und sollten die Methode hashCode() implementieren hashCode() wird aufgerufen, wenn zwei Schlüssel auf Gleichheit überprüft werden sollen Es gibt sortierte und unsortierte, geordnete und ungeordnete Maps

38 Java-Intensivkurs WS07/08 Folie 38 Tabellen (Maps) HashMap, HashTable, TreeMap und LinkedHashMap Sie alle implementieren das Map-Interface public interface Map { int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V value); V remove(Object key); void putAll(Map m); void clear(); Set keySet(); Collection values();... }

39 Java-Intensivkurs WS07/08 Folie 39 Das Map-Interface public interface Map {... Set > entrySet(); interface Entry { K getKey(); V getValue(); V setValue(V value); boolean equals(Object o); int hashCode(); } boolean equals(Object o); int hashCode(); }

40 Java-Intensivkurs WS07/08 Folie 40 Das Map-Interface V put(K key, V value): Fügt den Schlüssel key und seinen Wert in die Tabelle ein Falls ein Schlüssel bereits vorhanden ist, wird sein alter Wert durch den neuen Wert ersetzt Die Methode gibt dann den alten Wert des Schlüssels zurück Wenn der Schlüssel nicht vorhanden ist, gibt die Methode null zurück boolean containsKey(Object key): Gibt true zurück, wenn der Schlüssel in der Tabelle enthalten ist

41 Java-Intensivkurs WS07/08 Folie 41 Das Map-Interface V get(Object key): Gibt das dem Schlüssel zugeordnete Objekt zurück, oder null, falls der Schlüssel nicht in der Tabelle enthalten ist Set keySet(): Gibt alle Schlüssel der Tabelle als Menge zurück Collection values(): Gibt eine Collection der Objekte in der Map zurück. In der Collection können Duplikate enthalten sein.

42 Java-Intensivkurs WS07/08 Folie 42 HashMap und Hashtable Beide implementiert auf der Basis einer Hashtabelle Ihre Arbeitsweisen sind identisch Die Methoden von HashTable sind allerdings synchronisiert und daher Thread-sicher HashMap und Hashtable lassen null-Schlüssel und null-Objekte zu Ihre Elemente sind nicht geordnet

43 Java-Intensivkurs WS07/08 Folie 43 TreeMap TreeMap implementiert das SortedMap-Interface  speichert ihre Elemente sortiert TreeMaps lassen keine null-Schlüssel zu Ein Schlüssel kann jedoch mit einem null-Objekt assoziiert sein

44 Java-Intensivkurs WS07/08 Folie 44 TreeMap public class TreeMapSample { Map treeMap=new TreeMap (); public TreeMapSample(){ treeMap.put("Energy", "Joule"); treeMap.put("Work", "Joule"); treeMap.put("Pressure", "Pascal"); treeMap.put("Voltage", "Volt"); treeMap.put("Frequency", "Hertz"); treeMap.put("Resistance", "Ohm"); //treeMap.put(null, "Unkown"); treeMap.put("Power", "Watt"); treeMap.put("Temperature", "Celsius"); treeMap.put("Conductance", "Siemens"); treeMap.put("Unknown", null);} null- Schlüssel sind nicht erlaubt null-Werte sind erlaubt

45 Java-Intensivkurs WS07/08 Folie 45 TreeMap public static void main(String[] args) { System.out.println("Sorted Map:"); TreeMapSample treeMapSample = new TreeMapSample(); for (String key : treeMapSample.treeMap.keySet()) System.out.println(key + ": "+treeMapSample.treeMap.get(key)); }} Ausgabe: Sorted Map: Conductance: Siemens Energy: Joule Frequency: Hertz Power: Watt Pressure: Pascal Resistance: Ohm Temperature: Celsius Unknown: null Voltage: Volt Work: Joule

46 Java-Intensivkurs WS07/08 Folie 46 LinkedHashMap LinkedHashMap merkt sich die Reihenfolge, in der die Schlüssel/Wert-Paare eingefügt werden public class MapSample { public java.util.Map linkedMap= new LinkedHashMap (); public java.util.Map treeMap= new TreeMap (); public java.util.Map hashMap= new HashMap (); public MapSample() { int key=11; while (key-->0) { linkedMap.put(key, key*key); treeMap.put(key, key*key); hashMap.put(key+"", key*key);}

47 Java-Intensivkurs WS07/08 Folie 47 LinkedHashMap public static void main(String... args) { MapSample mapSample=new MapSample(); System.out.print("Ordered Map:\t "); Iterator it=mapSample.linkedMap.keySet().iterator(); while (it.hasNext()) System.out.print(mapSample.linkedMap.get(it.next())+" "); System.out.println(); System.out.print("Sorted Map:\t "); it=mapSample.treeMap.keySet().iterator(); while (it.hasNext()) System.out.print(mapSample.treeMap.get(it.next())+" "); System.out.println(); System.out.print("Unordered Map:\t "); Iterator it2=mapSample.hashMap.keySet().iterator(); while (it2.hasNext()) System.out.print(mapSample.hashMap.get(it2.next())+" "); } Ausgabe: Ordered Map: 100 81 64 49 36 25 16 9 4 1 0 Sorted Map: 0 1 4 9 16 25 36 49 64 81 100 Unordered Map: 9 4 1 100 0 49 36 25 16 81 64

48 Java-Intensivkurs WS07/08 Folie 48 Collections-Übersicht CollectionArryListVector Linked- List Hash -Set Tree- Set Linked- Hash- Set Hash- MapHashtable Tree- Map Linked- Hash-Map Geordnetja nein janein ja Sortiertnein janein janein null-Schlüssel Ja neinJa null-Werteja neinja Indexzugriffja nein Implementier- ung von equals() erforderlichnein janein Implementieru ng von hashCode() erforderlichnein janeinja Synchronisiertneinjanein janein

49 Java-Intensivkurs WS07/08 Folie 49 Generische Collections Vor JDK 1.5 waren alle Collection-Klassen nicht generisch Mit der add-Methode einer nicht generischen Liste könnte man z.B. Objekte unterschiedlicher Klassen in die Liste einfügen Collections waren daher nicht homogen List list=new ArrayList(); list.add(new Integer(5)); list.add("String-Object"); list.add(new Float(2.3f) ); Integer i=(Integer)list.get(0); s=(String)list.get(1); Float f=(Float)list.get(2); Casting erforderlich

50 Java-Intensivkurs WS07/08 Folie 50 Generische Collections Seit Version 5 sind alle Collection-Klassen und -Interfaces generisch und somit homogen Zugriffe auf Elemente erfordern kein Casting mehr: List list2=new ArrayList (); list2.add(new Integer(5)); list2.add(3); list2.add(new Integer(2) ); Integer ii= list2.get(0); Integer ss= list2.get(1); Integer ff= list2.get(2); Casting ist nicht erforderlich

51 Java-Intensivkurs WS07/08 Folie 51 Iteratoren (Iterator) Ein Iterator ist ein Objekt, das das java.util.Iterator-Interface implementiert Iteratoren bieten einen abstrakten Mechanismus zur Traversierung von Collections //Iterator-Interface interface Iterator { boolean hasNext(); E next(); void remove(); }

52 Java-Intensivkurs WS07/08 Folie 52 Iteratoren (Iterator) Ein Iterator hat einen Zeiger Wenn ein Iterator initialisiert wird, zeigt sein Zeiger auf das erste Element in der Sammlung boolean hasNext(): liefert genau dann true zurück, wenn die Sammlung nicht leer ist und der Zeiger nicht das Ende der Liste erreicht hat E next(): liefert das Objekt zurück, auf das der Iterator-Zeiger zeigt und bewegt anschließend den Zeiger zum nächsten Element Wenn der Zeiger beim letzten Element angelangt ist, liefern nachfolgende next()-Aufrufe null zurück Der Iterator kann dann nicht mehr verwendet werden

53 Java-Intensivkurs WS07/08 Folie 53 Iteratoren (Iterator) void remove(): ruft next() auf und entfernt ggf. das Element, das next() zurück liefert Das Collection-Interface verfügt über die Methode Iterator iterator(), die einen Iterator für die Collection zurück liefert Der Iterator liefert die Elemente seiner Collection in der Reihenfolge zurück, in der sie gespeichert sind

54 Java-Intensivkurs WS07/08 Folie 54 Iteratoren public class IteratorSample { public List list = new ArrayList (); public Set set = new HashSet (); public Map map = new HashMap (); public IteratorSample(){ int ii=0; for(int i=0; i<11; i++){ ii=i*i; list.add(ii); set.add(ii); map.put(i, ii); }

55 Java-Intensivkurs WS07/08 Folie 55 Iteratoren public static void main(String[] args) { IteratorSample is=new IteratorSample(); Iterator it=is.list.iterator(); System.out.print("List: "); while(it.hasNext()) System.out.print(it.next()+" "); System.out.println(); it=is.set.iterator(); System.out.print("Set: "); while(it.hasNext()) System.out.print(it.next()+" "); System.out.println(); it=is.map.keySet().iterator(); System.out.print("Map: "); while(it.hasNext()){ int key=it.next(); System.out.print("("+key+","+is.map.get(key)+") ");}}}

56 Java-Intensivkurs WS07/08 Folie 56 Iteratoren Zur Traversierung von Collections können auch for- each-Schleifen verwendet werden


Herunterladen ppt "Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung."

Ähnliche Präsentationen


Google-Anzeigen