Generics & Collections

Documenti analoghi
Metodi di una Collection

Introduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework

Introduzione al Java Collections Framework

Il Java Collections Framework

Collezioni. (a cura del Prof. Marco Patella)

Strutture dati "classiche"

Corso di Progettazione del Software

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Telematica II 15. Esercitazione/Laboratorio 5

Lezione 6 Collezioni. Il concetto astratto di collezione. Servizio minimo: IContainer. Stack (pila)

Testo di Riferimento (usato nei corsi precedenti)

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Le collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni

Java Collection Framework. L14 JCF unina 1

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classi Wrapper, & Generics. Il package java.util. Strutture dati avanzate in Java

22 - Strutture Dati (Java Collections Framework)

Esercizio su Alberi. Specifiche Esercizio Alberi

Collezioni in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Il linguaggio Java: aggiunte in Java 1.5

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classe Wrapper & Generics

Java Collection Framework

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Esempio su strutture dati dinamiche: ArrayList

Programmazione Java: Come contenere oggetti

Ingegneria del Software 1: Generici e Collezioni

STRUTTURE DATI IN JAVA

Esempio su strutture dati dinamiche: ArrayList

Convenzioni. I nomi delle Classi iniziano con la MAIUSCOLA. I nomi degli Oggetti iniziano con la MINUSCOLA. Pila p=new Pila();

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Corso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte)

Fondamenti di informatica Oggetti e Java. Luca Cabibbo. Collezioni++ (Aggiunte di Marco Patella) Capitolo 26.bis. aprile 2006.

Mapping delle collections. Dott. Doria Mauro

Maps. a.k.a, associative array, map, or dictionary

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

IL CONCETTO DI CLASSE

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

Astrazioni Polimorfe e Tipi Generici

Esempio su strutture dati dinamiche: ArrayList

Corso di Algoritmi e Strutture Dati con Laboratorio. Tipi di dato pila e coda

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

Strutture Dati nella piattaforma Java: Java Collections Framework

Programmazione. ( a.k.a. Generics )

Implementazione Java di un ADT

Generics in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it

JAVA in ACTION. Jacopo Torrini. Dipartimento di Ingegneria dell'informazione Laboratorio di Tecnologie del Software.

Capitolo 16. Programmazione generica. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Errata Corrige di Manuale di Java 8

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

TIPI PRIMITIVI E CLASSI WRAPPER

Appunti Java. 1 - Il Linguaggio. A cura di R. Gimelli, G. Necordi, M. Campodonico V 1.0-1/2003. Copyright (c) 2003 Jtech.Srl -

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Java. Classi Anonime In Java Da Java 1.1 si possono usare classi anonime per implementare interfacce. Espressioni Lambda. Implementazione Interfaccia

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Astrazioni sul controllo. Iteratori

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Le liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Il tipo astratto di dati Node List

Capitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Polimorfismo parametrico vs polimorfismo per inclusione

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Compute engine generici in RMI

COLLEZIONI. SOMMARIO Collezioni: Liste: ITERATORI ITERATORI

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Polimorfismo per Genericità in Java

Corso Programmazione Java Standard

La classe java.lang.object

Programmazione a Oggetti Metodologie di Programmazione 8 Giugno 2012

Corso di Fondamenti di Informatica I

Scope e visibilità per classi

Esempio: Interfacce. Gioco Interfacce

Algoritmi e Strutture Dati. Strutture di dati

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Concorrenza e sincronizzazione

Programmazione Java Avanzata Concetti su Java

Progettazione del Software

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione Parametrica ( a.k.a. Generics )

Programmazione orientata agli oggetti Classi astratte e interfacce

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati

Corso: Strutture Dati Docente: Annalisa De Bonis

Dalle Classi Alle Interfacce

Muoversi all interno di un Vector. Vector e Enumeration. Enumeration. Collezioni di oggetti: Vector. La classe Object. Aggiungere oggetti a un Vector

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Java Collection Framework

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Programmazione ad oggetti Prova scritta 15 Gennaio 2013

Alberi binari ( 7.3)

Transcript:

Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it

I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici Una classe generica è dichiarbile usando una variabile di tipo E. public class GenericTest<E> { private E var; public GenericTest(E var){ this.var = var;} public E getvar() { return var; } public void setvar(e var) { this.var = var;} }

I Generics - Esempio 3 Proviamo ad invocare la classe GenericTest public static void main(string[] args) { String st = (new GenericTest<String>("aaa")).getVar(); System.out.println(st+ " - "+st.getclass()); Integer it = (new GenericTest<Integer>(100)).getVar(); System.out.println(it+ " - "+it.getclass()); } Risultato esecuzione: aaa - class java.lang.string 100 - class java.lang.integer

Generics 4 Il tipo di dato che indicate va a sostituire la variabile di tipo utilizzata nella definizione dell interfaccia o della classe generica (ArrayList<String> o ArrayList<MiaClasse>) Non si possono utilizzare i tipi primitivi ma solo oggetti ArrayList<double> // Sbagliato ArrayList<Double> // Giusto

Java Collections Frameworks 5 Rappresenta un architettura unificata preposta all uso e al trattamento di gruppi di oggetti. Sono principalmente composte da: Interfacce: tipi di dati astratti che rappresentano collezioni, come List, Queue, Set e Map Implementazioni: classi basilari che implementano le interfacce fondamentali Algoritmi: implementazioni di funzioni basilari come ordinamento e ricerca, applicabili a tutte le collezioni

Collections - gerarchia 6

Collections Metodi dell interfaccia 7 // Operationi di base int size(); boolean isempty(); boolean contains(object element); boolean add(e element); // Opzionale boolean remove(object element); // Opzionale Iterator iterator(); // Operationi sull insieme boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); // Opzionale boolean removeall(collection<?> c); // Opzionale boolean retainall(collection<?> c); // Opzionale void clear(); // Opzionale

Set 8 Set è una collezione che rappresenta un insieme di oggetti privo di elementi duplicati. Le tre principali implementazioni sono: HashSet TreeSet LinkedHashSet I set non mantengono alcun ordinamento, se questo fosse necessario si può utilizzare un SortedSet. L ordinamento può essere definito attraverso l uso di un Comparator

Liste 9 List è una collezione che rappresenta una sequenza di oggetti nella quale sono ammessi i duplicati. Le tre principali implementazioni sono: ArrayList LinkedList Vector Fornisce metodi aggiuntivi rispetto a Collection

Liste 2 10 // Accesso Posizionale E get(int index); E set(int index, E element); boolean add(e element); void add(int index, E element); E remove(int index); boolean addall(int index, Collection<? extends E> c); // Ricerca int indexof(object o); int lastindexof(object o); // Iterazione ListIterator<E> listiterator(); ListIterator<E> listiterator(int index);

Queue 11 Queue è una collezione di oggetti pensata per contenere gli elementi prima di processarli; l implementazione principale è LinkedList. Fornisce metodi aggiuntivi rispetto a Collection Operazione Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()

Map 12 Map è una collezione che permette di associare un valore ad una chiave. Non sono ammessi valori e chiavi duplicate. Sono ammessi valori nulli! Le tre principali implementazioni sono: HashMap TreeMap LinkedHashMap Fornisce metodi aggiuntivi rispetto a Collection

Map 2 13 // Operatori base V put(k key, V value); V get(object key); V remove(object key); boolean containskey(object key); boolean containsvalue(object value); int size(); boolean isempty(); // Collection Views Set<K> keyset(); Collection<V> values(); Set<Map.Entry<K,V>> entryset();

HashTable 14 Hashtable non è una collezione ma implementa l interfaccia Map La principale differenza tra la Hashtable e la Hashmap è che la Hashtable è sincronizzata e non ammette valori nulli. Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();

Interface Iterator<E> 15 L oggetto iterator permette di scandire e rimuovere oggetti da collezioni. Fornisce i seguenti metodi: boolean hasnext() E next(); void remove(); Iterator<String> iteratore = listastringhe.iterator(); while(iteratore.hasnext()){ stringa = iteratore.next(); //Elemento successivo iteratore.remove(); //Rimuovi elemento corrente }

Osservazione su Generics e Collections 16 E possibile vincolare il tipo generico ad essere un sottotipo di un tipo dato public void metodo(collection<? extends MiaSuperClasse> padre) Il metodo mostrato può gestire una qualsiasi collezione i cui elementi estendono la classe MiaSuperClasse