From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100092.html | 401 +++++++++++++++++++++ 1 file changed, 401 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100092.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100092.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100092.html b/Master/Reference Architectures and Patterns/hjp5/html/k100092.html new file mode 100644 index 0000000..58ee15c --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100092.html @@ -0,0 +1,401 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 14 - Collections I +
+
+ + + + +

14.2 Die Klasse Vector

+
+ +
+ +

+Die Klasse Vector +aus dem Paket java.util +ist die Java-Repräsentation einer linearen Liste. +Die Liste kann Elemente beliebigen Typs enthalten, und ihre Länge +ist zur Laufzeit veränderbar. Vector +erlaubt das Einfügen von Elementen an beliebiger Stelle und bietet +sowohl sequenziellen als auch wahlfreien Zugriff auf die Elemente. +Das JDK realisiert einen Vector +als Array von Elementen des Typs Object. +Daher sind Zugriffe auf vorhandene Elemente und das Durchlaufen der +Liste schnelle Operationen. Löschungen und Einfügungen, +die die interne Kapazität des Arrays überschreiten, sind +dagegen relativ langsam, weil Teile des Arrays umkopiert werden müssen. +In der Praxis können diese implementierungsspezifischen Details +allerdings meist vernachlässigt werden, und ein Vector +kann als konkrete Implementierung einer linearen Liste angesehen werden. + + + + +

14.2.1 Einfügen von Elementen

+ +

+Das Anlegen eines neuen Vektors kann mit Hilfe des parameterlosen +Konstruktors erfolgen: +

+ + + + + +
+ +
+public Vector()
+
+
+
+java.util.Vector
+ +

+Nach dem Anlegen ist ein Vector +zunächst leer, d.h. er enthält keine Elemente. Durch Aufruf +von isEmpty +kann geprüft werden, ob ein Vector +leer ist; size +liefert die Anzahl der Elemente: +

+ + + + + +
+ +
+public final boolean isEmpty()
+
+public final int size()
+
+
+
+java.util.Vector
+ +

+Elemente können an beliebiger Stelle in die Liste eingefügt +werden. Ein Vector +erlaubt die Speicherung beliebiger Objekttypen, denn die Einfüge- +und Zugriffsmethoden arbeiten mit Instanzen der Klasse Object. +Da jede Klasse letztlich aus Object +abgeleitet ist, können auf diese Weise beliebige Objekte in die +Liste eingefügt werden. +

+ + + + + + + + + + + +
+ +

+Leider ist der Zugriff auf die gespeicherten Elemente damit natürlich +nicht typsicher. Der Compiler kann nicht wissen, welche Objekte +an welcher Stelle im Vector +gespeichert wurden, und geht daher davon aus, dass beim Zugriff auf +Elemente eine Instanz der Klasse Object +geliefert wird. Mit Hilfe des Typkonvertierungsoperators muss diese +dann in das ursprüngliche Objekt zurückverwandelt werden. +Die Verantwortung für korrekte Typisierung liegt damit beim Entwickler. +Mit Hilfe des Operators instanceof +kann bei Bedarf zumindest eine Laufzeit-Typüberprüfung vorgeschaltet +werden.

+ + + + +
 Warnung 
+
+ +

+Neue Elemente können wahlweise an das Ende des Vektors oder an +einer beliebigen anderen Stelle eingefügt werden. Das Einfügen +am Ende erfolgt mit der Methode addElement: +

+ + + + + +
+ +
+public void addElement(Object obj)
+
+
+
+java.util.Vector
+ +

+In diesem Fall wird das Objekt obj +an das Ende der bisherigen Liste von Elementen angehängt. + +

+Soll ein Element dagegen an einer beliebigen Stelle innerhalb der +Liste eingefügt werden, ist die Methode insertElementAt +zu verwenden: +

+ + + + + +
+ +
+public void insertElementAt(Obj obj, int index)
+  throws ArrayIndexOutOfBoundsException
+
+
+
+java.util.Vector
+ +

+Diese Methode fügt das Objekt obj +an der Position index in den +Vektor ein. Alle bisher an dieser oder einer dahinterliegenden Position +befindlichen Elemente werden um eine Position weitergeschoben. + + + + +

14.2.2 Zugriff auf Elemente

+ +

+Ein Vektor bietet sowohl sequenziellen als auch wahlfreien +Zugriff auf seine Elemente. Für den sequenziellen Zugriff bietet +es sich an, den im nachfolgenden Abschnitt beschriebenen Iterator +zu verwenden. Der wahlfreie Zugriff erfolgt mit einer der Methoden +firstElement, +lastElement +oder elementAt: +

+ + + + + +
+ +
+public Object firstElement()
+  throws ArrayIndexOutOfBoundsException
+
+public Object lastElement()
+  throws ArrayIndexOutOfBoundsException
+
+public Object elementAt(int index)
+  throws ArrayIndexOutOfBoundsException
+
+
+
+java.util.Vector
+ +

+firstElement +liefert das erste Element, lastElement +das letzte. Mit Hilfe von elementAt +wird auf das Element an Position index +zugegriffen. Alle drei Methoden verursachen eine Ausnahme, wenn das +gesuchte Element nicht vorhanden ist. + + + + +

14.2.3 Der Vektor als Iterator

+ +

+Für den sequenziellen Zugriff auf die Elemente des Vektors steht +ein Iterator zur Verfügung. Ein Iterator ist eine Abstraktion +für den aufeinanderfolgenden Zugriff auf alle Elemente einer +komplexen Datenstruktur (siehe Abschnitt 10.4.5. +Ein Iterator für die traditionellen Collection-Klassen wird in +Java durch das Interface Enumeration +zur Verfügung gestellt und deshalb in der Java-Welt oft auch +als Enumerator bezeichnet. + +

+Das Interface Enumeration +besitzt die Methoden hasMoreElements +und nextElement. +Nach der Initialisierung zeigt ein Enumeration-Objekt +auf das erste Element der Aufzählung. Durch Aufruf von hasMoreElements +kann geprüft werden, ob weitere Elemente in der Aufzählung +enthalten sind, und nextElement +setzt den internen Zeiger auf das nächste Element: +

+ + + + + +
+ +
+public boolean hasMoreElements()
+
+public Object nextElement()
+  throws NoSuchElementException
+
+
+
+java.util.Enumeration
+ +

+In der Klasse Vector +liefert die Methode elements +einen Enumerator für alle Elemente, die sich im Vektor befinden: +

+ + + + + +
+ +
+public Enumeration elements()
+
+
+
+java.util.Enumeration
+ +

+Das folgende Beispiel verdeutlicht die Anwendung von elements: + + +

+ + + + + +
+ +
+001 /* Listing1401.java */
+002 
+003 import java.util.*;
+004 
+005 public class Listing1401
+006 {
+007   public static void main(String[] args)
+008   {
+009     Vector v = new Vector();
+010 
+011     v.addElement("eins");
+012     v.addElement("drei");
+013     v.insertElementAt("zwei",1);
+014     for (Enumeration el=v.elements(); el.hasMoreElements(); ) {
+015       System.out.println((String)el.nextElement());
+016     }
+017   }
+018 }
+
+
+Listing1401.java
+ +Listing 14.1: Die Methode elements der Klasse Vector

+ +

+Das Programm erzeugt einen Vector, +fügt die Werte »eins«, »zwei« und »drei« +ein und gibt sie anschließend auf dem Bildschirm aus: + +

+eins
+zwei
+drei
+
+ +

+ + + + + + + + + + + +
+ +

+Ein Enumerator ist immer dann nützlich, wenn die Elemente eines +zusammengesetzten Datentyps nacheinander aufgezählt werden sollen. +Enumeratoren werden in Java noch an verschiedenen anderen Stellen +zur Verfügung gestellt, beispielsweise in den Klassen Hashtable +oder StringTokenizer.

+ + + + +
 Tipp 
+
+


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3