Ultimo aggiornamento: 14 Febbraio 2024
Stato del documento: ◯ revisione in atto


JAVA ⮊ COLLECTIONS
- Conoscenza propedeutica
- Collezioni d'elementi
- Elementi in ordine d'inserimento
- Elementi in ordine di prelevamento
- Elementi non duplicati
- Elementi chiave-valore
- Road-map delle decisioni
PROTOTIPO : : ARDUINO PIN MANAGER : : MACRO AREA
PROTOTIPO : : GALILEO HTTP SERVER : : MACRO AREA
PROTOTIPO : : SMART DESIGN METHODOLOGY : : MACRO AREA
PROTOTIPO : : PREDICTION SYSTEM : : MACRO AREA
Conoscenze acquisite per la comprensione e
lo sviluppo dei prototipi

Conoscenza propedeutica
Pianificazione di un indicatore Funzioni Wrapper ClassCollezioni d'elementi
docs.oracle.com - Interface Iterable<T> docs.oracle.com - Interface Collection<E> docs.oracle.com - Interface List<E> docs.oracle.com - Interface Iterator<E> docs.oracle.com - Interface ListIterator<E>
✓ Interface Collection<E>
docs.oracle.com - The Collection Interface
- rappresentano un raggruppamento di elementi
- alcune Collection consentono di duplicare gli elementi, altre no
- alcune Collection sono ordinate e altre non ordinate
- JDK non fornisce alcuna
implementazione diretta di questa interfaccia,
ma la demanda alle sue sotto-interfacce estese:
BeanContext, BeanContextServices, BlockingDeque<E>,
BlockingQueue<E>, Deque<E>, EventSet,
List<E>, NavigableSet<E>, Queue<E>,
Set<E>, SortedSet<E>, TransferQueue<E> - dovrebbero fornire due costruttori "standard":
- un costruttore void ( senza argomenti ), che crea una collezione vuota
- un costruttore con un singolo argomento di tipo Collection
- alcuni metodi sono specificati come opzionali. La loro implementazione deve lanciare un'eccezione UnsupportedOperationException
- alcune Collection hanno restrizioni sugli elementi → possono vietare quelli null e limitarne il tipo
- un elemento non ammissibile lancia un'eccezione non controllata, tipicamente → NullPointerException o ClassCastException
- il metodo equals(Object o) è un collo di bottiglia
la specifica del metodo contains(Object o) → restituisce true se e solo se la Collection contiene almeno un elemento tale che
( o==null ? e==null : o.equals(e) ) - operazioni di raccolta che eseguono
un'attraversamento ricorsivo
oppure Collection che contengono se stesse,
possono originare un eccezione
clone(), equals(Object o), hashCode(), toString()
- non implementa l'interfaccia Serializable
✓ View Collections
- non memorizzano gli elementi, ma si affidano
a una collezione di supporto per la memorizzazione
-
Collections.checkedCollection ( vista → mutabile, con controllo sul tipo inserito )
Collection<String> c = Collections.checkedCollection(new HashSet<>(), String.class);
-
Collections.synchronizedCollection ( vista → mutabile, sincronizzata )
Collection c = Collections.synchronizedCollection(myCollection); ... synchronized (c) { Iterator i = c.iterator(); // selezione sui dati while (i.hasNext()) foo(i.next()); }
- Collections.unmodifiableCollection ( vista → a sola lettura )
-
Collections.checkedCollection ( vista → mutabile, con controllo sul tipo inserito )
- possono fornire una rappresentazione diversa
degli stessi elementi
( vista → mutabile, partizione )
✓ Interface List<E>
- possono accedere agli elementi nella struttura, tramite un indice ( posizione d'inserimento)
- consentono la duplicazione degli elementi
- ammettono uno o più elementi null
- se contengono se stesse, possono originare un eccezione
- un elemento non ammissibile lancia un'eccezione non controllata → NullPointerException o ClassCastException
✓ Interface List<E> (
a sola lettura )
- static <E> List<E> of(E... elements)
- static <E> List<E> copyOf(Collection<? extends E> coll)
- List<E> subList(int fromIndex, int toIndex)
- le istanze create da questi metodi statici:
- sono immodificabili
- la chiamata a un metodo mutatore causa un'eccezione → UnsupportedOperationException
- non ammettono elementi null
- sono serializzabili se l'insieme degli elementi nella struttura lo sono
- l'ordine degli elementi è quello dell'interfaccia sorgente
- implementano l'interfaccia RandomAccess
✓ Interface Iterator<E>
- sostituiscono
Interface Enumeration<E>
- consentono al chiamante di rimuovere elementi dall'insieme sottostante durante un'iterazione
✓ Interface ListIterator<E>
- estendono Iterator<E>
- consentono di attraversare una struttura in entrambe le direzioni
- consentono di modificare gli elementi durante un'iterazione
- consentono di ottenere la posizione corrente dell'iterazione nella struttura
- non hanno un'elemento corrente
- il cursore si trova sempre tra l'elemento restituito da una chiamata al metodo previous() e quello restituito da una chiamata al metodo next()
Elementi in ordine d'inserimento
✓ Scheletro implementato di una Collection<E>docs.oracle.com - Class AbstractCollection<E> docs.oracle.com - Class AbstractList<E> docs.oracle.com - Class AbstractSequentialList<E>
✓ Class AbstractCollection<E>
- forniscono un'implementazione dell'interfaccia Collection<E>
- per implementare una struttura
non modificabile:
- estendere AbstractCollection<E>
- implementare i metodi → abstract iterator(), Collection.size()
- gli Iterator<E> → restituiti dal metodo iterator() → devono implementare i metodi → Iteretor.hasNext(), Iteretor.next()
- per implementare una struttura
modificabile:
- estendere AbstractCollection<E>
- sovrascrivere il metodo → add(E e) che altrimenti lancerebbe un'eccezione UnsupportedOperationException
- gli Iterator<E> → restituiti dal metodo iterator() → devono implementare il metodo → default Iteretor.remove()
- per implementare una struttura
fornire due costruttori "standard":
- un costruttore void ( senza argomenti ), che crea una collezione vuota
- un costruttore con un singolo argomento di tipo Collection<E>, di cui crea una copia

Riferimenti
Java documentazione
bugs.java.com - Java Bug Database JDK 15 Documentation Version 15 API Specification Java Core Libraries Java Tutorials Learning Paths docs.oracle.com - Collections Framework overview docs.oracle.com - Outline of the Collections Framework docs.oracle.com - Trail: CollectionsModulo → java.base : : Package → java.lang
docs.oracle.com - Interface IterableModulo → java.base : : Package → java.util
docs.oracle.com - Interface Collection docs.oracle.com - Interface List docs.oracle.com - Interface Iterator docs.oracle.com - Interface ListIterator docs.oracle.com - Class AbstractCollection docs.oracle.com - Class AbstractList& docs.oracle.com - Class AbstractSequentialList docs.oracle.com - Class Collections docs.oracle.com - Class ArrayList docs.oracle.com - Class Vector docs.oracle.com - Class LinkedList docs.oracle.com - Class Stack docs.oracle.com - Class PriorityQueue docs.oracle.com - Class ArrayDeque docs.oracle.com - Interface Set docs.oracle.com - Interface SortedSet docs.oracle.com - Interface NavigableSet docs.oracle.com - Class AbstractSet docs.oracle.com - Class EnumSet docs.oracle.com - Class HashSet docs.oracle.com - Class LinkedHashSet docs.oracle.com - Class TreeSet docs.oracle.com - Class HashMap docs.oracle.com - Class Hashtable docs.oracle.com - Class TreeMapModulo → java.base : : Package → java.util.concurrent
docs.oracle.com - Package java.util.concurrent docs.oracle.com - Interface BlockingQueue docs.oracle.com - Class CopyOnWriteArrayList docs.oracle.com - Class ArrayBlockingQueue docs.oracle.com - Class LinkedBlockingQueue docs.oracle.com - Class PriorityBlockingQueue docs.oracle.com - Class SynchronousQueue docs.oracle.com - Class ConcurrentLinkedQueue docs.oracle.com - Class DelayQueue docs.oracle.com - Class CopyOnWriteArraySet docs.oracle.com - Class ConcurrentSkipListSet.htmlAlgoritmi
Funzione di hashTutorial e articoli
cs.lmu.edu - Collections demo2s.com - Java Collections Introduction dzone.com - The Best of Java Collections [Tutorials] tutorialspoint.com - Java - Collections Framework java2s.com - Java Collection Tutorial javatpoint.com - Java Collection Tutorial howtodoinjava.com - Java Collection Tutorial tutorials.jenkov.com - Java Collection Tutorial baeldung.com - Java Collections Article geeksforgeeks.org - Collections in Java geeksforgeeks.org - ArrayDeque in Java geeksforgeeks.org - DelayQueue Class in Java geeksforgeeks.org - BlockingQueue Interface in Java geeksforgeeks.org - PriorityBlockingQueue Class in Java geeksforgeeks.org - ConcurrentLinkedQueue in Java geeksforgeeks.org - TreeSet in Java geeksforgeeks.org - Red-Black Tree examples.javacodegeeks.com - Java Collections Article tabnine.com - How to use List in java.util
© Buscati Caminiti Massimiliano Patrizio. All rights reserved. office@buscati.org