martedì 7 maggio 2019

Lezione del 7/5/2019: stream

Differenza tra iterazione interna ed esterna. Metodi di Stream: map, limit, skip, collect. Collectors: counting, maxBy/minBy, summingInt, averagingInt, joining, toList, toSet. toCollection, mapping, summingInt, averagingInt. Operazioni intermedie: limit, skip, flatMap. L'operazione terminale reduce. Importanza dell'ordine delle operazioni. Stream sequenziali e paralleli.

Lezione del 3/5/2019: ancora sui generici e introduzione agli stream

Introduzione ai tipi generici. Generici e collezioni: interfacce generiche prototipiche. La classe Optional. Gli stream: definizione; caratteristiche; operazioni intermedie e terminali. Metodi principali dell'interfaccia java.util.stream.Stream. Comportamento "pigro" (lazy) degli stream. Operazioni senza stato e con stato. Stream ottimizzati per i tipi primitivi: IntStream, DoubleStream e LongStream. Come ottenere uno stream: da elenco di valori, da una Collection, da un array, da un file. Il pattern Builder, la sua importanza nel paradigma orientato agli oggetti e il suo uso negli stream mediante operazioni intermedie e terminali. Operazioni intermedie e terminali degli stream.


martedì 30 aprile 2019

Lezione del 30/04/2019: Comparator, interfacce funzionali standard, pila e coda, alberi, grafi. Introduzione ai generici.

Espressioni lambda per specificare il Comparator. Riferimenti a metodi: statici, d'istanza con riferimento, d'istanza con classe. Ordinamento di una collection in Java 8 vs. Java 7. Metodi di default e statici dell'interfaccia Comparator. Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Introduzione ai tipi generici. Generici e collezioni: interfacce generiche prototipiche.

venerdì 26 aprile 2019

Lezione del 26/04/2019: Set, Map, Comparator e riferimenti a metodi

Esempi di uso di HashSet e TreeSet. Funzionamento di un HashSet: il metodo hashCode. HashMap e TreeMap: l'interfaccia Map. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator. Insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento. I metodi keySet, values e entrySet di Map. Espressioni lambda per specificare il Comparator. Espressioni lambda per specificare il Comparator. Riferimenti a metodi: statici, d'istanza con riferimento, d'istanza con classe.



mercoledì 17 aprile 2019

martedì 16 aprile 2019

Lezione del 16/04/2019: interfacce, classi annidate e interne, interfacce funzionali, espressioni lambda, collections (1/2)

Intefacce funzionali. Espressioni lambda. Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator.

Esonero dell'8/4/2019

Ci siamo messi alla prova!!!


venerdì 5 aprile 2019

Lezione del 05/04/2019: interfacce, metodi di default, statici e privati nelle interfacce, iterabilità, esercizi

Le interfacce in Java: metodi pubblici, metodi di default, statici e privati nelle interfacce. Iterabilità mediante le interfacce Iterable e Iterator. Esercizi: DistributoreAutomatico, EssereVivente. SequenzaAritmetica e SequenzaAritmeticaConPasso iterabili. Rendere iterabile un array di stringhe.


Lab del 03/04/2019: esercizi su ereditarietà e polimorfismo

Esercizi: ContoBancario, espressioni matematiche. Rendere iterabile una lista di interi mediante Iterable/Iterator.


martedì 2 aprile 2019

Lezione doppia del 02/04/2019: polimorfismo, classe Object e liste

Polimorfismo: definizione, esempi e casistiche. Esempi: la classe Impiegato, ImpiegatoStipendiato e ImpiegatoACottimo. La parola chiave super per accedere a metodi e campi della superclasse. L'operatore instanceof. Downcasting e upcasting: differenze ed effetti sull'interfaccia pubblica. La classe universale Object e i suoi metodi principali: clone, equals, getClass, hashCode, toString. Sovrascrivere i metodi toString, equals e clone. Metodi e classi final. Interfacce in Java: dichiarazione, implementazione. Introduzione alle liste; metodi di ArrayList. Introduzione alle interfacce.