uio--WebPageMain-Module

JAVA-B2 Collections Collections Framework Diagramm Was sind Collections Vorteile

Collection Interfaces Core-Collection-Interfaces (Begriff, Ziele, Standard) Liste der Core Interfaces List Set Queue Dequeue SortedSet NavigableSet Map SortedMap NavigableMap Collections Zusammenfassung @!Beispiele+Links

Das Interface Collection Das Superinterface Diagramm Diagramm Collection-Standard-Methoden Zusammenfassung

Implementierungsklassen Implementierungsklassen Diagramm Array[T]> Lists ArrayList<E> LinkedList<E> CopyWriteOnList<E> Set<E> Implementations HashSet<E> TreeSet<E> EnumSet<E> CopyWriteOnArraySet<E> Queue<E> Implementations LinkedList<E> PriorityQueue<E> Deque<E> Implementations LinkedList<E> ArrayDeque<E> Map<E> Implementations HashMap<K,V> LinkedHashMap<K,V> TreeMap<K,V> WeakHashMap<K,V> IdentityHashMap<K,V> EnumMap<K,V> ConcurrentHashMap<K,V>** ConcurrentSkipList<K,V>** SortedSet<E> Implementations TreeSet<E> EnumSet<E> BlockingQueue<E> Implementations ArrayBlockingQueue<E> LinkedBlockingQueue<E> LinkedBlockingQueue<E> PriorityBlockingQueue<E> SynchronousQueue<E> DelayQueue<E> Legacy Types für Listen Vector Hashtable Stack Stack HashSet<E> HashSet<E> @!Descriptions @!Examples @!Index/Examples

Overview

Collections | Intro

In der Einführung in Collection geben wir einen Einblick, was Collections sind, wie man mit Collections als Entwickler bessere Programme realisiert und für alle Beteiligten den Job etwas einfacher macht.

Wir geben einen Überblick über die zentralen Elemente welche in der Summe des Java Collection Framework bilden: Die Collection Interfaces, die Implementierungsklassen für Collections sowie auch die zugehörigen Algorithmen von Collections in Java.

Intro

Intro | Einführung in Collections

Begriffsbestimmung

Eine Collection ist einfach ein Objekt, welches mehrere Elemente zu einer einzigen Einheit gruppiert. Objekt dieser Collection-Klassen oder auch Objekte, welche den Collection-Interfaces entsprechen, bezeichnet man auch als «Container».

Collections werden verwendet, um Daten zu speichern, abzurufen, zu bearbeiten und als Gesamtstruktur zu übermitteln.

Typischerweise repräsentieren sie Datenobjekte, die eine natürliche Gruppe bilden – beispielsweise eine Pokerhand (eine Sammlung von Karten), einen E-Mail-Ordner (eine Sammlung von Briefen) oder ein Telefonbuch (eine Zuordnung von Namen zu Telefonnummern).

Dieses Prinzip, Daten in Containern zu strukturieren, ist jedem Entwickler bekannt, auch wenn es viele verschiedene Varianten gibt, wie man dieses organisieren kann.

Abbildung: Grafik mit JAVA Collection-Interfaces und JAVA Collection-Klassen sowie Informationen zur Implementierung und Erweiterung von Interfaces um andere Interfaces, SNEWMEDIA, 2025. {@ref}

Intro | Was ist ein Collections Framework?

Ein Collections-Framework ist eine einheitliche Architektur zur Darstellung und Verarbeitung von Sammlungen.

Jedes Collections-Framework umfasst folgende Komponenten:

Interfaces

Interfaces sind abstrakte Datentypen, die Collections repräsentieren. Interfaces ermöglichen es, Collections unabhängig von ihrer konkreten Implementierung zu verwalten. In objektorientierten Sprachen bilden Interfaces oft eine Hierarchie.

Implementierungen

Konkrete Implementierungen der Collection-Interfaces. Im Wesentlichen handelt es sich dabei um wiederverwendbare Datenstrukturen.

Algorithmen

Algorithmen sind im Zusammenhang mit Java Collections letztendlich Methoden, welche nützliche Operationen wie Suchen und Sortieren auf Objekten ausführen, sofern diese die entsprechenden Collection-Interfaces implementieren.

Diese Algorithmen sind polymorph, d. h., dieselbe Methode kann für verschiedene Implementierungen des jeweiligen Collection-Interfaces verwendet werden. Kurz gesagt, Algorithmen bieten wiederverwendbare Funktionalität.

Hinweis: Man könnte sinngemäß auch von Rezepten sprechen.

Der praktische Aspekt bei Java Collections besteht darin, dass alle Collections die gleichen Algorithen ermöglichen, so dass das Prinzip in der Verwendung bei allen Collectionen-Typen identisch ist.

Collection-Frameworks in anderen Sprachen

Neben dem Java Collections Framework sind bekannte Beispiele für Collections-Frameworks die C++ Standard Template Library (STL) und die Smalltalk-Collection-Hierarchie.

Historisch gesehen waren Collections-Frameworks oft sehr komplex, was ihnen den Ruf einer hohen Einstiegshürde eingebracht hat. Das Java Collections Framework bricht mit dieser Tradition und bietet eine einfachere Lernkurve.



Vorteile des Java Collections Frameworks

Das Java Collections Framework bietet eine ganze Reihe von Vorteilen. Für manche Entwickler ist die Verfügbarkeit und Akzeptanz dieser Collections ein Grund dafür, sich für Java als Programmiersprache zu entscheiden.

Reduziert den Programmieraufwand

Durch die Bereitstellung nützlicher Datenstrukturen und Algorithmen ermöglicht es das Collections Framework, sich auf die wichtigen Teile eines Programms zu konzentrieren, anstatt sich mit niedrigstufigen Implementierungsdetails zu beschäftigen. Zudem erleichtert es die Interoperabilität zwischen verschiedenen APIs, sodass keine zusätzlichen Adapter-Objekte oder Konvertierungslogik erforderlich sind.

Erhöht die Geschwindigkeit und Qualität von Programmen

Das Framework bietet leistungsstarke und qualitativ hochwertige Implementierungen nützlicher Datenstrukturen und Algorithmen. Da jede Interface-Implementierung austauschbar ist, können Programme einfach optimiert werden, indem verschiedene Collection-Typen genutzt werden.

Zudem spart es Entwicklern Zeit, da sie keine eigenen Datenstrukturen schreiben müssen und sich stattdessen auf die Verbesserung von Code-Qualität und Performance konzentrieren können.

Ermöglicht Interoperabilität zwischen unterschiedlichen APIs

Collection-Interfaces dienen als gemeinsame Schnittstelle, über die verschiedene APIs Datenstrukturen miteinander austauschen.

Beispielsweise kann eine API zur Netzwerkverwaltung eine Liste von Hostnamen bereitstellen, während eine GUI-Toolkit-API eine Liste von Tabellenspalten erwartet.

Durch die standardisierten Interfaces können diese APIs miteinander interagieren, selbst wenn sie unabhängig voneinander entwickelt wurden.

Erleichtert das Lernen und die Nutzung neuer APIs

Viele APIs arbeiten mit Collections – entweder als Eingabe oder Ausgabe. Früher hatte jede API eigene kleine Sub-APIs für ihre Collections, die sich untereinander unterschieden.

Infolge dieser eigenen Sub-APIs für jeweils eigene Collections und damit Objekten, welche im Sinne von Container den Datenaustausch zwischen Methoden und/oder Funktionen ermöglichen, bestand ein typisches Problem:

Entwickler mussten jedes API-Modell einzeln lernen. Das erforderte nicht nur viel Zeit: Dieser Ansatz war auch sehr fehleranfällig. Man kannte diese Sub-APIs nicht so genau. Hinzukam die Problematik, dass diese Sub-APIs auch immer mal überarbeitet wurden, was zu einer Vielzahl von Abhängigkeitsproblemen führte.

Mit der Einführung standardisierter Collection-Interfaces wie mitunter dem Java Collection Framework entfällt dieses Problem. Im Grunde genommen kennt jeder Java Entwickler diese Collections.

Verringert den Aufwand bei der Entwicklung neuer APIs

Entwickler müssen nicht jedes Mal das Rad neu erfinden, wenn eine API mit Collections arbeitet. Stattdessen können sie direkt auf bestehende, standardisierte Collection-Interfaces zurückgreifen.

Vor einer Planung einer neuen Collection wird deshalb grundsätzlich empfohlen, zuerst einmal die Liste der bestehende Collections im Framework zu sichten.

Fördert die Wiederverwendung von Software

Neue Datenstrukturen, die den Standard-Collection-Interfaces entsprechen, sind von Natur aus wiederverwendbar. Dasselbe gilt für Algorithmen, die auf Objekten arbeiten, die diese Interfaces implementieren.

So ist es durchaus möglich, eigene Implementierungen von Collections, sogenannte Custom-Collections, zu entwickeln. In dem Augenblick, in welchem diese die gewünschten Interfaces aus dem Collection-Framework implementiert haben, lassen sich diese eigenen Collections genauso verwenden wie die Collection-Klassen aus dem java.util Package.

Adapter-Klassen: Diese sind normalerweise dafür da, um eine Schnittstelle an eine andere anzupassen. Beispielsweise könnte man eine Adapter-Klasse schreiben, um eine bestehende Datenstruktur in eine bestimmte API-Schnittstelle einzufügen. Ohne das Collections-Framework müsste man oft eigene Implementierungen schreiben, um verschiedene Datenstrukturen kompatibel zu machen.

Adapter-Objekte: Adapter-Objekte sind Instanzen dieser Adapter-Klassen. Sie fungieren als Brücken, die zwischen inkompatiblen Schnittstellen vermitteln. Ein Beispiel wäre eine Klasse, die eine List in eine Set-Schnittstelle «übersetzt», wenn eine API oder ein Modul eine andere Struktur benötigt.

Konvertierungslogik: Ohne das Collections Framework wären Entwickler gezwungen, Datenstrukturen manuell zu konvertieren. Das könnte beispielsweise bedeuten, eine ArrayList in eine LinkedList umzuwandeln, indem man jeden einzelnen Eintrag kopiert. Das Collections Framework bietet stattdessen standardisierte Methoden und Interfaces wie Collection, List, Set und Map, sodass diese Umwandlungen fast automatisch und effizient ablaufen.

In JavaScript und PHP ist das Konzept eines zentralisierten Collection-Frameworks nicht direkt vorhanden. Beide Sprachen bieten flexible Arrays und Objekte als primäre Datenstrukturen, allerdings ohne die einheitlichen Methoden, die das JCF mitbringt. JavaScript hat inzwischen Map und Set eingeführt, wodurch Entwickler sich nicht mehr mit klobigen Objekt-basierten Lösungen herumschlagen müssen. Trotzdem ist der Grad der Standardisierung nicht so weit fortgeschritten wie bei Java.

UI ORGANIZED.

UIO3 Es ist einfacher als Du denkst.

Stelle noch heute Deine Anfrage.

uio--WebPageFooter-Module