Grundkonzepte java.util.list

Ähnliche Dokumente
java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API

JAVA KURS COLLECTION

Java Collections Framework (JCF)

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Kapitel 5: Iterierbare Container

Teil V. Generics und Kollektionen in Java

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Programmieren 2 16 Java Collections und Generizität

Einstieg in die Informatik mit Java

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

19 Collections Framework

Einführung in die Programmierung mit Java

Rückblick: Inf A - Algorithmen. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 07: Collections 1. Inhalt.

ADT: Java Collections und ArrayList

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Abstrakte Datentypen und Java

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Java Einführung Collections

Programmieren 2 Übung Semesterwoche 2

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

II.4.4 Exceptions - 1 -

4.4.9 Das Java Collection Framework

Kapitel 14. Das Java Collection Interface. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Collections und Iteratoren ListIterator Sets. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Algorithmen und Datenstrukturen CS1017

2.4. Java Collections Framework

Einführung in die Programmierung

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Grundkurs Informatik. Viele Schränke bilden eine Schrankwand

Programmieren I. Kapitel 13. Listen

Kapitel 12: Java Collection Teil II

Grundlagen der Informatik Generische Klassen

Einführung in die Programmierung

Abgabe: (vor der Vorlesung) Aufgabe 3.1 (P) Master-Theorem

Kapitel 3: Datentyp Liste

Programmierkurs Java

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Bäume und der Sequence ADT

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Ordnung im Materiallager: Datenstrukturen II. Suchen und Sortieren im Array Verkettete Listen Rekursion

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Mengen und Multimengen

Kurzreferenz für Java-Klassen und SML

ALP II Dynamische Datenmengen Datenabstraktion

Transkript:

Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw. gelöscht wird. Eine Liste kann Elemente mehrfach enthalten (insbes. null-elemente). Zugriffsoperationen können je nach Implementierung teuer sein. Wenn immer möglich soll die Liste mittels einem Iterator abgearbeitet werden. Algorithmen und Datenstrukturen 4-13 Interface List (1) public interface List extends Collection { // Zugriff und Suche Object get(int index); int indexof(object o); int lastindexof(object o); // Veränderung Object set(int index, Object element); //Opt. void add(object element); //Opt. void add(int index, Object element); //Opt. Object remove(object element); //Opt. Object remove(int index); //Opt. Algorithmen und Datenstrukturen 4-14

Interface List (2) // Iterator ListIterator listiterator(); ListIterator listiterator(int index); // Bereich List sublist(int from, int to); Algorithmen und Datenstrukturen 4-15 Konzept ListIterator (1) Ein ListIterator unterstützt das Abarbeiten einer Folge in der gewünschten Reihenfolge (vorwärts bzw. rückwärts). Traversieren einer Liste in Vorwärtsrichtung ist mittels next() und hasnext()möglich. o ListIterator it=l.listiterator(); while(it.hasnext()) { Object o = it.next(); //Objekt o verarbeiten Algorithmen und Datenstrukturen 4-16

Konzept ListIterator (2) previous() und hasprevious() analog für rückwärts. set(object o) ersetzt Element, das als letztes besucht wurde. remove() entfernt Element, das als letztes besucht wurde. o Algorithmen und Datenstrukturen 4-17 Konzept ListIterator (3) a b add(object o) fügt Element an der gegenwärtigen Iteratorposition ein d.h. vor dem Element, das next() bzw. hinter dem Element, das prev() liefern würde. a b Algorithmen und Datenstrukturen 4-18

Interface ListIterator public interface ListIterator extends Iterator { boolean hasnext(); Object next(); boolean hasprevious(); Object previous(); int int nextindex(); previousindex(); void remove(); // Optional void set(object o); // Optional void add(object o); // Optional Algorithmen und Datenstrukturen 4-19 Klasse ArrayList public class ArrayList extends AbstractList implements List,... Implementierung mittels Felder, die in der Grösse anwachsen können. Grosse Ähnlichkeit mit Vector(). Hauptunterschied zu Vector(): Keine Synchronisation, ArrayList() effizienter bei sequentiellen Programmen Veränderung bei gleichzeitigem Lesen erkannt (fail-safe). Algorithmen und Datenstrukturen 4-20

Klasse LinkedList public class LinkedList extends AbstractSequentialList implements List,... Implementierung mittels doppelt verketteter Listen. Direktzugriffsoperationen zu vermeiden. Ebenfalls fail-safe. Algorithmen und Datenstrukturen 4-21 Collection und Verwandte Das Collection Rahmenwerk besteht aus einer Reihe von hierarchisch aufgebauten Schnittstellen. Algorithmen und Datenstrukturen 4-22

Interface Collection (1) public interface Collection { int size(); boolean isempty(); boolean contains(object element); boolean add(object element); //Optional boolean remove(object element); //Optional Iterator iterator(); boolean containsall(collection c); boolean addall(collection c); //Optional boolean removeall(collection c);//optional boolean retainall(collection c);//optional void clear(); //Optional Algorithmen und Datenstrukturen 4-23 Interface Collection (2) Object[] toarray(); Object[] toarray(object a[]); Per Konvention sollen alle konkreten Implementierungen einen Konstruktor mit dem Argument Collection haben, der aus einem beliebigen Collection-Typ ein neues Objekt erzeugt. Vorteil: Konversionen zwischen allen Typen möglich. List l = new ArrayList(c); Algorithmen und Datenstrukturen 4-24

Klasse AbstractCollection public abstract class AbstractCollection implements Collection Diese Klasse ist eine Skelettimplementierung des Collection-Interface. Für die Realisierung einer nichtveränderbaren Collection-Klasse muss nur size() und iterator() implementiert werden. Algorithmen und Datenstrukturen 4-25 Klasse AbstractList public abstract class AbstractList extends AbstractCollection implements List Geeignet für Listen mit Direktzugriff. listiterator bereits vorhanden. Für die Realisierung einer nichtveränderbaren Liste muss nur get(int index) und size() implementiert werden. Algorithmen und Datenstrukturen 4-26

Klasse AbstractSequentialList public abstract class AbstractSequentialList extends AbstractList Geeignet für Listen mit sequentiellem Zugriff. get(int index),... bereits vorhanden. Für die Realisierung einer nichtveränderbaren Liste müssen nur noch Methoden des listiterators implementiert werden. Algorithmen und Datenstrukturen 4-27 Interface Iterator public interface Iterator { boolean hasnext(); Object next(); void remove(); // Optional Typische Anwendung: Einzelne Elemente nacheinander besuchen Iterator it=c.iterator(); while(it.hasnext()) { Object o = it.next(); //Objekt o verarbeiten Algorithmen und Datenstrukturen 4-28

Klasse Collections Die Klasse Collections in java.util besteht aus einer Sammlung von statischen Methoden, mit denen Listen und andere Datenstrukturen des Collection Rahmenwerks bearbeitet werden können. Es gibt 2 unterschiedliche Anwendungsbereiche: Methoden zur algorithmischen Unterstützung: min, max, search shuffle, sort Definition von Sichten / Wrapper: synchronized... unmodifiable... Algorithmen und Datenstrukturen 4-29