uio--WebPageMain-Module
JAVA-C2 Collection Advanced Collection Advanced Problemstellung Diagramm

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.

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

    UI ORGANIZED.

    UIO3 Es ist einfacher als Du denkst.

    Stelle noch heute Deine Anfrage.

    uio--WebPageFooter-Module