Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Import java.util.*; Hilfsklassen, die man eigentlich immer braucht.

Ähnliche Präsentationen


Präsentation zum Thema: "Import java.util.*; Hilfsklassen, die man eigentlich immer braucht."—  Präsentation transkript:

1 import java.util.*; Hilfsklassen, die man eigentlich immer braucht

2 © till.haenisch@gmx.de Überblick Hilfsklassen eher Teil der Sprache, als Bibliothek Collections Arrays Vector Hashtable Maps, Sets, Lists Iteratoren Date StringTokenizer Properties...

3 © till.haenisch@gmx.de Arrays enthalten feste (Maximal-) Zahl von Objekten Zugriff über Index (Start bei 0) String Names[] = new String[3]; Names[0] = new String("Max"); Names[1] = new String("Hugo"); Names[2] = new String("Albert"); for(int i=0;i<Names.length;i++) System.out.println(Names[i]); Arrays.sort(Names); for(int i=0;i<Names.length;i++) System.out.println(Names[i]); int idx = Arrays.binarySearch(Names,"Max"); System.out.println(idx);

4 © till.haenisch@gmx.de Kopieren von Arrays Das Array wird so nicht kopiert, nur die Referenz !! Alternativen: int a[] = {1,2,3,4,5}; int b[] = a; a b 1 2 3 4 5 b = new int[a.length]; for(int i=0;i<a.length;i++)// langsam b[i]=a[i]; System.arraycopy(a,0,b,0,a.length);// schnell b = (int []) a.clone(); // Bitweise Kopie aus java.lang.Object

5 © till.haenisch@gmx.de Arrays unbekannter Größe ? Array wird einmal erzeugt hat dann feste Größe automatische Erweiterung nach Bedarf ? entweder selbst schreiben, oder java.util.Vector Vector V = new Vector(); // Initiale Kapazität 10 Vector V = new Vector(100); // Initiale Kapazitaet 100 V.add("Hallo"); V.add("Welt"); System.out.println(V.elementAt(1)); // Welt V.setElementAt(1,"World");

6 © till.haenisch@gmx.de Vector Wichtige Methoden add(Object) oder addElement(Object) hängt Objekt ans Ende an setElementAt(Object, Index) oder set(Index,Object) überschreibt Objekt an Position Index elementAt(Index) oder get(Index) gibt Element an Position Index zurück gibt ein Object zurück, deshalb normalerweise cast nötig size() liefert Anzahl der enthaltenen Objekte Iteration normalerweise: int size = V.size(); for(int i=0;i<size;i++) String s = V.elementAt(i);

7 © till.haenisch@gmx.de Wrapperklassen Vector (und andere Container, Ausnahme: Array) enthalten Objekte ist int ein Objekt ? NEIN !! Abhilfe Wrapperklassen Zu jedem primitiven Typ existiert eine Klasse Primitiver TypWrapperklasses booleanBoolean byteByte charCharacter doubleDouble floatFloat intInteger longLong shortShort

8 © till.haenisch@gmx.de Wrapperklassen contd. Verwendung V.add(new Integer(1)); V.add(new Integer(2)); System.out.println(V.elementAt(1)); // 2 V.setElementAt(new Integer(3),1); System.out.println(V.elementAt(1)); // 3 Weitere Anwendung: Konvertierung Integer I = new Integer("21"); int i = I.intValue(); String s = I.toString(); // kürzer: i = (new Integer("21")).intValue(); // noch kürzer i = Integer.parseInt("21"); Integer Fehler = new Integer("2x1"); // // wirft NumberFormatException

9 © till.haenisch@gmx.de Hashtable Vector: Index ist int, Hashtable: Index ist Object z.B. Zuordnung Name/Kundennummer Hashtable H = new Hashtable(); H.put("Müller",new Integer(4711)); H.put("Maier",new Integer(42)); System.out.println((Integer)H.get("Müller")); funktioniert mit beliebigen Objekten als Key/Value Prüfung, ob key enthalten mit contains(key) Liste der Keys/Values mit elements() bzw. keys() liefert Enumeration zurück

10 © till.haenisch@gmx.de weitere Map Interface ist Verallgemeinerung von Hashtable versch. Implementierungen, z.B. HashMap keine doppelten keys List Interface ist Verallgemeinerung von Vector versch. Implementierungen, z.B. ArrayList Zugriff über Index Set Interface ungeordnete Menge von Objekten Iterator Interface Zugriff auf Elemente for(Iterator i = c.iterator(); i.hasNext()) doSomething(i.next());

11 © till.haenisch@gmx.de Date Date D = new Date(); System.out.println(D); --> Tue May 15 19:49:05 GMT+02:00 2001 System.out.println(D.toLocaleString()); --> 15.05.2001 19:50:17 Ab JDK 1.1 deprecated, durch Calendar ersetzt Calendar cal = Calendar.getInstance(); cal.setTime(D); System.out.println(cal.get(Calendar.DAY_OF_MONTH)); Formatierung mit java.text.DateFormat

12 © till.haenisch@gmx.de StringTokenizer zerlegt String nachTrennzeichen StringTokenizer T = new StringTokenizer("Max,Hugo,Karl",","); while (T.hasMoreTokens()) { String s = T.nextToken(); System.out.println(s); } mehrere Trennzeichen möglich StringTokenizer T = new StringTokenizer("Max,Hugo,Karl",",.; \n\t"); Verzeichnisse aus Pfad extrahieren StringTokenizer T = new StringTokenizer("Max,Hugo,Karl","/\\"); Text in Wörter zerlegen StringTokenizer T = new StringTokenizer("Max,Hugo,Karl"," \t,.!-");

13 © till.haenisch@gmx.de Properties Liest Werte aus Konfigurationsdateien (property Dateien) Properties p = new Properties(); try { p.load(new FileInputStream("config.dat")); } catch (Exception e) { e.printStackTrace(); } System.out.println(p.getProperty("einwert")); // oder mit Default System.out.println(p.getProperty("nocheiner","irgendwas")); Für internationalisierte Programme mit java.util.ResourceBundle

14 © till.haenisch@gmx.de usw. Random Erzeugung von Zufallszahlen java.util.zip Verwaltung von ZIP Files java.text Internationalisierung java.net TCP/IP Networking usw ;-) Zunächst nachschauen, ob die Lösung für ein Problem nicht bereits da ist !!


Herunterladen ppt "Import java.util.*; Hilfsklassen, die man eigentlich immer braucht."

Ähnliche Präsentationen


Google-Anzeigen