Concurrent Collection Interfaces & Classes Thread-sichere Lists Collection.synchronizedList() CopyOnWriteArrayList (@Bsp?) Thread-sichere Sets Collection.synchronizedSet() CopyOnWriteArraySet Thread-sichere Queues BlockingQueue ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue Nicht-serialisierbare Queues SynchronousQueue DelayQueue Thread-sichere Maps Collection.synchronizedMap(..) ConcurrentHashMap
Aggregate Operations Streams & Aggregate Operations (Overview) @! 15 Page Section Links fehlen! Person ExampleData Aggregate Operations @!section? stream() @!section? for-Loop for-Loop stream() und forEach() Streams und Pipelines Filter und Predicates EXAMPLE 03 Stream/Predicate/Consumer EXAMPLE 04 Consumer mit Generic Type Parameter EXAMPLE 05 Predicates/Enums/Collection "Pipelines" EXAMPLE 06 Mapping to new Type EX6 Summary maptTOInt, ToIntFunction, IntStream.average() OptionalDouble EXAMPLE 07 Map Key-Value-Array zu LinkedHashMap Stream.mapToObj(k,v) collect(Collectors.toMap(a,b,c,d) Map.entry(k,v) map(*).findFirst().orElse(*) Map.getOrDefault(..)
Collection Reduction stream.reduce Collection Collecting Collection stream.collect
@! Kapitel überprüfen! @! Java-Tier von B4 auf B2 verschoben! @! Alle Links/Referenzen checken!
Collection-Parallelism Collection Stream API ab JAVA 8 .parallelStream() .parallelStream() .parallelStream().mapToInt(*).average).getAsDouble() Typ OptionalDouble Begriff Fork Begriff Join Executing Streams in Parallel (01) Concurrent Reduction (02) Ordered Sequentiell (03) Ordered Parallel (04) Side Effects Parallel Computing "Lazyness" (06) Interference (07) State-Full-Lambda Expressions (08) zustandsbehaftete Lambda-Ausdrücke (08)
Collections, Streams & Algorithms Collection Streams (Overview) UIO SimulateDownloadDataProvider** connectSimulated():ListINT Filter (prime, schnapps, quer, mod, Operations filter, map, sorted, collect, reduce, peek, limit
(Collection FAQ) Datenquellen zu Streams konvertieren Array-Stream Collection-Stream Map-Stream Primitive-Stream Generatoren-Stream Iteratoren-Stream (Collection Implementations) (Collection Algorithms)
Overview
Collection Advanced | Overview
Für eine vertiefende Betrachtung und Nutzung von Collections in JAVA wiederholen wir die Einführung in die Core-Collection-Interfaces und die Implementierungsklassen mit einer Erweiterung um weitere Collection-Interfaces und weitere Implementierungsklassen aus dem Bereich java.util.concurrent Package.
Der Weg für Entwickler für bisherige iterative sequentielle Verarbeitung der Werte von Collections zu einer sequentiellen Verarbeitung über Streams über die Stream API ist inzwischen genauso kurz wie der Sprung zur parallelen Verarbeitung über parallelStream(). Nun sind bis auf Ausnahmen die üblichen java.util-Collections nicht synchronisiert. Darüber hinaus werden immer wieder Concurrent Modififaction Exceptions CMEs ausgelöst.
Problemstellung
Collection Advanced | Problemstellung
Die Vielzahl von Interfaces und Implementierungsklassen ist auch für erfahrene Entwickler nur schwer zu erfassen. Man hat sich mit der Zeit gewisse Wege angewöhnt und freut sich über scheinbar funktionierende Anwendungen, aber mitunter Concurrent Modification Exceptions CME und andere Fehler im Parallel Computing treten höchst selten und erst ein der Ausführung auf. Eine Übersicht wäre praktisch.
Die Grafik mit einem Diagramm gibt einen groben Überblick über die Frage, welche Klassen welche Interfaces und welche Interfaces wiederum welche anderen Interfaces implementiert haben.
Darüber hinaus ist es von sehr großer Bedeutung, zu wissen, welche Collections schlussendlich Thread-sicher sind, und ob es nun non-blocking oder blocking ist.
WICHTIG: Man kann einer Collection, auf welche man über ein Interface zugreift, NICHT ansehen, ob diese Thread-sicher ist oder nicht. Entwickler müssen also VORHER bereits die entsprechenden Implementierungsklassen verwenden, andere Entwickler, welche diese Collections nutzen, allenfalls noch mit try-catch-Fehler abfangen könnten, was oftmals aber vergessen wird und zum Crash einer Anwendung oder zumindest Abbruch von Tasks im Scheduler führen kann.
Collections Diagramm
Collection Advanced | Diagramm
Collection-Interfaces und Collection-Klassen aus java.util und auch aus java.util.concurrent im Überblick.
Abbildung: Grafik mit JAVA Collection-Interfaces und JAVA Collection-Klassen sowie Informationen zur Implementierung und Erweiterung von Interfaces um andere Interfaces, SNEWMEDIA, 2025. {@ref}
Wiederholung
Collection Advanced | Interfaces (Wiederholung)
Für den Einstieg in die Collection Stream API, Aggregate Operations, Reduction, Collection, sequentielle und parallele Streams ist es zwingend erforderlich, dass Sie die grundlegenden Core-Collection-Interfaces und deren Unterschiede verstanden haben.
Collection
Alle Core-Collection-Interfaces im java.util.*
basierend auf dem
Collection (Interface). Damit ist sichergestellt, dass auch
alle anderen Core-Collection-Interfaces über die gleichen
Methoden und überladenen Konstruktoren verfügen.
Predefined Interfaces
Das Collection (Interface) sowie
auch andere Interfaces und Klassen implementieren teilweise
das eine oder andere weitere Interfaces
aus java.util.lang, darunter
Iterable,
RandomAccess,
Cloneable und
Serializable.
Diese Interfaces wurden im Themenblock PredefinedInterfaces erläutert.
Abbildung: Grafik mit JAVA Collection-Interfaces und JAVA Collection-Klassen sowie Informationen zur Implementierung und Erweiterung von Interfaces um andere Interfaces, SNEWMEDIA, 2025. {@ref}
Links
FootNotes
Cloneable, Iterable, RandomAccess, Serializable
UIO3 Es ist einfacher als Du denkst.
Stelle noch heute Deine Anfrage.

