array e collezioni - capitolo 5€¦ · le posizioni di un array sono contate a partire da zero...

96
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5 - 1 / 61

Upload: others

Post on 11-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Capitolo 5

Array e collezioni

c© 2005 Pearson Education Italia Capitolo 5 - 1 / 61

Page 2: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sommario: Array e collezioni

1 ArrayArray di oggettiLunghezza di un arrayAccesso agli elementi di un arrayArray e cicli for e for–eachInizializzazione di arrayL’intestazione del metodo mainArray di tipo primitivoArray di array

2 Classi genericheLa classe generica Sequenza<E>La classe generica SequenzaOrdinata<E>

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 2 / 61

Page 3: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Array

Array

Insieme ordinato di variabili dello stesso tipo (tipo base), ognuna dellequali e accessibile specificando la posizione in cui si trova.

Tipo basePuo essere sia un tipo primitivo sia un tipo riferimento

Array di oggettiArray il cui tipo base e un tipo riferimento

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 3 / 61

Page 4: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Array

Array

Insieme ordinato di variabili dello stesso tipo (tipo base), ognuna dellequali e accessibile specificando la posizione in cui si trova.

Tipo basePuo essere sia un tipo primitivo sia un tipo riferimento

Array di oggettiArray il cui tipo base e un tipo riferimento

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 3 / 61

Page 5: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Array

Array

Insieme ordinato di variabili dello stesso tipo (tipo base), ognuna dellequali e accessibile specificando la posizione in cui si trova.

Tipo basePuo essere sia un tipo primitivo sia un tipo riferimento

Array di oggettiArray il cui tipo base e un tipo riferimento

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 3 / 61

Page 6: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Costruzione di array

In Java gli array sono oggetti

Costruzione di un array

new tipo base[espressione int]

Dichiarazione di variabile

Tipo base[] identificatore;

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 4 / 61

Page 7: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Costruzione di array

In Java gli array sono oggetti

Costruzione di un array

new tipo base[espressione int]

Dichiarazione di variabile

Tipo base[] identificatore;

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 4 / 61

Page 8: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Costruzione di array

In Java gli array sono oggetti

Costruzione di un array

new tipo base[espressione int]

Dichiarazione di variabile

Tipo base[] identificatore;

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 4 / 61

Page 9: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 6 / 61

Page 10: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

String[] nomi = new String[4]

In un array di oggetti le posizioni sono automaticamente inizializzate anull all’atto della creazione

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 8 / 61

Page 11: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

String[] nomi = new String[4]

In un array di oggetti le posizioni sono automaticamente inizializzate anull all’atto della creazione

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 8 / 61

Page 12: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Lunghezza di un array

Ogni oggetto di tipo array ha memorizzata nel suo statol’informazione relativa alla sua lunghezza

Tale informazione si trova in un campo di nome length e di tipo int

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

frazioni.length

E un’espressione di tipo int

Il suo valore e 4

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 10 / 61

Page 13: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Lunghezza di un array

Ogni oggetto di tipo array ha memorizzata nel suo statol’informazione relativa alla sua lunghezza

Tale informazione si trova in un campo di nome length e di tipo int

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

frazioni.length

E un’espressione di tipo int

Il suo valore e 4

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 10 / 61

Page 14: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Lunghezza di un array

Ogni oggetto di tipo array ha memorizzata nel suo statol’informazione relativa alla sua lunghezza

Tale informazione si trova in un campo di nome length e di tipo int

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

frazioni.length

E un’espressione di tipo int

Il suo valore e 4

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 10 / 61

Page 15: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Lunghezza di un array

Ogni oggetto di tipo array ha memorizzata nel suo statol’informazione relativa alla sua lunghezza

Tale informazione si trova in un campo di nome length e di tipo int

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

frazioni.length

E un’espressione di tipo int

Il suo valore e 4

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 10 / 61

Page 16: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Accesso agli elementi

nome array[selettore]

selettoreDev’essere un’espressione di tipo int

Espressioni di tipo short, byte, o char vengono promosseautomaticamente a int

Le posizioni di un array sono contate a partire da zero

nome array[selettore] e una variabile con:

tipo tipo base dell’array

valore il contenuto della posizione corrispondente dell’array

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 11 / 61

Page 17: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Accesso agli elementi

nome array[selettore]

selettoreDev’essere un’espressione di tipo int

Espressioni di tipo short, byte, o char vengono promosseautomaticamente a int

Le posizioni di un array sono contate a partire da zero

nome array[selettore] e una variabile con:

tipo tipo base dell’array

valore il contenuto della posizione corrispondente dell’array

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 11 / 61

Page 18: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Accesso agli elementi

nome array[selettore]

selettoreDev’essere un’espressione di tipo int

Espressioni di tipo short, byte, o char vengono promosseautomaticamente a int

Le posizioni di un array sono contate a partire da zero

nome array[selettore] e una variabile con:

tipo tipo base dell’array

valore il contenuto della posizione corrispondente dell’array

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 11 / 61

Page 19: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Accesso agli elementi

nome array[selettore]

selettoreDev’essere un’espressione di tipo int

Espressioni di tipo short, byte, o char vengono promosseautomaticamente a int

Le posizioni di un array sono contate a partire da zero

nome array[selettore] e una variabile con:

tipo tipo base dell’array

valore il contenuto della posizione corrispondente dell’array

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 11 / 61

Page 20: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Accesso agli elementi

nome array[selettore]

selettoreDev’essere un’espressione di tipo int

Espressioni di tipo short, byte, o char vengono promosseautomaticamente a int

Le posizioni di un array sono contate a partire da zero

nome array[selettore] e una variabile con:

tipo tipo base dell’array

valore il contenuto della posizione corrispondente dell’array

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 11 / 61

Page 21: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

Frazione[] frazioni;frazioni = new Frazione[4];

frazioni[0] = new Frazione(1,4);frazioni[1] = new Frazione(2,4);frazioni[2] = new Frazione(3,4);

int i = 2;frazioni[2 * i - 1] = frazioni[2 * i - 2].piu(frazioni[1]);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 13 / 61

Page 22: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso alle componenti

Frazione[] frazioni = new Frazione[4];

frazioni[0] = new Frazione(1,4);

frazioni[1] = new Frazione(2,4);frazioni[2] = new Frazione(3,4);frazioni[3] = new Frazione(4,4);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 14 / 61

Page 23: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso alle componenti

Frazione[] frazioni = new Frazione[4];

frazioni[0] = new Frazione(1,4);

frazioni[1] = new Frazione(2,4);frazioni[2] = new Frazione(3,4);frazioni[3] = new Frazione(4,4);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 14 / 61

Page 24: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso alle componenti

Frazione[] frazioni = new Frazione[4];

frazioni[0] = new Frazione(1,4);

frazioni[1] = new Frazione(2,4);frazioni[2] = new Frazione(3,4);frazioni[3] = new Frazione(4,4);

frazioni

Frazione

1/4

Frazione

2/4

Frazione

3/4

Frazione

4/4

0 1 2 3

Frazione[]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 14 / 61

Page 25: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Il tentativo di accedere a una componente non definita dell’array causa unerrore in fase di esecuzione

Frazione[] frazioni = new Frazione[4];...frazioni[4] = new Frazione(5,4);

Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 4

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 16 / 61

Page 26: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Il tentativo di accedere a una componente non definita dell’array causa unerrore in fase di esecuzione

Frazione[] frazioni = new Frazione[4];...frazioni[4] = new Frazione(5,4);

Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 4

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 16 / 61

Page 27: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Accesso agli elementi di un array

Il tentativo di accedere a una componente non definita dell’array causa unerrore in fase di esecuzione

Frazione[] frazioni = new Frazione[4];...frazioni[4] = new Frazione(5,4);

Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 4

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 16 / 61

Page 28: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Array e cicli for

Frazione[] frazioni = new Frazione[4];

for (int i = 0; i < frazioni.length; i++)frazioni[i] = new Frazione(i + 1,4);

for (int i = 0; i < frazioni.length; i++)out.println(frazioni[i].toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 18 / 61

Page 29: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

for–each

Sintassi

for (tipo base identificatore: array)istruzione

Esempio

Frazione[] frazioni = new Frazione[4];...for (Frazione f: frazioni)

out.println(f.toString());

e equivalente a:

for (int i = 0; i < frazioni.length; i++)out.println(frazioni[i].toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 20 / 61

Page 30: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

for–each

Sintassi

for (tipo base identificatore: array)istruzione

Esempio

Frazione[] frazioni = new Frazione[4];...for (Frazione f: frazioni)

out.println(f.toString());

e equivalente a:

for (int i = 0; i < frazioni.length; i++)out.println(frazioni[i].toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 20 / 61

Page 31: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

for–each

Sintassi

for (tipo base identificatore: array)istruzione

Esempio

Frazione[] frazioni = new Frazione[4];...for (Frazione f: frazioni)

out.println(f.toString());

e equivalente a:

for (int i = 0; i < frazioni.length; i++)out.println(frazioni[i].toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 20 / 61

Page 32: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione: for–each

Consente di ottenere uno dopo l’altro i valori contenuti nell’array

Non consente di accedere alle posizioni dell’array e quindi nonconsente di modificare l’array

Esempio

Frazione[] frazioni = new Frazione[4];

for (int i = 0; i < frazioni.length; i++)frazioni[i] = new Frazione(i + 1,4);

for (Frazione f: frazioni)out.println(f.toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 22 / 61

Page 33: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione: for–each

Consente di ottenere uno dopo l’altro i valori contenuti nell’array

Non consente di accedere alle posizioni dell’array e quindi nonconsente di modificare l’array

Esempio

Frazione[] frazioni = new Frazione[4];

for (int i = 0; i < frazioni.length; i++)frazioni[i] = new Frazione(i + 1,4);

for (Frazione f: frazioni)out.println(f.toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 22 / 61

Page 34: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione: for–each

Consente di ottenere uno dopo l’altro i valori contenuti nell’array

Non consente di accedere alle posizioni dell’array e quindi nonconsente di modificare l’array

Esempio

Frazione[] frazioni = new Frazione[4];

for (int i = 0; i < frazioni.length; i++)frazioni[i] = new Frazione(i + 1,4);

for (Frazione f: frazioni)out.println(f.toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 22 / 61

Page 35: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione: for–each

Consente di ottenere uno dopo l’altro i valori contenuti nell’array

Non consente di accedere alle posizioni dell’array e quindi nonconsente di modificare l’array

Esempio

Frazione[] frazioni = new Frazione[4];

for (int i = 0; i < frazioni.length; i++)frazioni[i] = new Frazione(i + 1,4);

for (Frazione f: frazioni)out.println(f.toString());

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 22 / 61

Page 36: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Inizializzazione di array

Si puo specificare fra parentesi graffe la sequenza di valori checostituiscono l’array

Frazione[] frazioni = {new Frazione(1,4), new Frazione(2,4),new Frazione(3,4), new Frazione(4,4)};

La dimensione dell’array viene dedotta dal compilatore

frazioni

Frazione

1/4

Frazione

2/4

Frazione

3/4

Frazione

4/4

0 1 2 3

Frazione[]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 24 / 61

Page 37: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Inizializzazione di array

Si puo specificare fra parentesi graffe la sequenza di valori checostituiscono l’array

Frazione[] frazioni = {new Frazione(1,4), new Frazione(2,4),new Frazione(3,4), new Frazione(4,4)};

La dimensione dell’array viene dedotta dal compilatore

frazioni

Frazione

1/4

Frazione

2/4

Frazione

3/4

Frazione

4/4

0 1 2 3

Frazione[]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 24 / 61

Page 38: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Inizializzazione di array

Si puo specificare fra parentesi graffe la sequenza di valori checostituiscono l’array

Frazione[] frazioni = {new Frazione(1,4), new Frazione(2,4),new Frazione(3,4), new Frazione(4,4)};

La dimensione dell’array viene dedotta dal compilatore

frazioni

Frazione

1/4

Frazione

2/4

Frazione

3/4

Frazione

4/4

0 1 2 3

Frazione[]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 24 / 61

Page 39: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Inizializzazione di array

Si puo specificare fra parentesi graffe la sequenza di valori checostituiscono l’array

Frazione[] frazioni = {new Frazione(1,4), new Frazione(2,4),new Frazione(3,4), new Frazione(4,4)};

La dimensione dell’array viene dedotta dal compilatore

frazioni

Frazione

1/4

Frazione

2/4

Frazione

3/4

Frazione

4/4

0 1 2 3

Frazione[]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 24 / 61

Page 40: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for

String[] nomi;

//fase di scritturafor (int pos = 0; pos < nomi.length; pos++)out.println(nomi[pos].toString());

Compilazione

> javac UsoErratoArray.java...: variable nomi might not have been initialized

for (int pos = 0; pos < nomi.length; pos++)^

1 error

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 26 / 61

Page 41: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for

String[] nomi;

//fase di scritturafor (int pos = 0; pos < nomi.length; pos++)out.println(nomi[pos].toString());

Compilazione

> javac UsoErratoArray.java...: variable nomi might not have been initialized

for (int pos = 0; pos < nomi.length; pos++)^

1 error

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 26 / 61

Page 42: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for–each

String[] nomi;

//fase di scritturafor (String s: nomi)out.println(nomi.toString());

Compilazione

> javac UsoErratoArray.java...: variable nomi might not have been initialized

for (String s: nomi)^

1 error

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 28 / 61

Page 43: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for–each

String[] nomi;

//fase di scritturafor (String s: nomi)out.println(nomi.toString());

Compilazione

> javac UsoErratoArray.java...: variable nomi might not have been initialized

for (String s: nomi)^

1 error

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 28 / 61

Page 44: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for

Frazione[] frazioni = new Frazione[4];

//fase di scritturafor (int pos = 0; pos < frazioni.length; pos++)out.println(frazioni[pos].toString());

Esecuzione

> java UsoErratoArrayException in thread "main" java.lang.NullPointerException

at UsoErratoArray.main(UsoErratoArray.java:14)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 30 / 61

Page 45: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for

Frazione[] frazioni = new Frazione[4];

//fase di scritturafor (int pos = 0; pos < frazioni.length; pos++)out.println(frazioni[pos].toString());

Esecuzione

> java UsoErratoArrayException in thread "main" java.lang.NullPointerException

at UsoErratoArray.main(UsoErratoArray.java:14)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 30 / 61

Page 46: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for–each

Frazione[] frazioni = new Frazione[4];

//fase di scritturafor (Frazione f: frazioni)out.println(f.toString());

Esecuzione

> java UsoErratoArrayException in thread "main" java.lang.NullPointerException

at UsoErratoArray.main(UsoErratoArray.java:14)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 32 / 61

Page 47: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Errore: for–each

Frazione[] frazioni = new Frazione[4];

//fase di scritturafor (Frazione f: frazioni)out.println(f.toString());

Esecuzione

> java UsoErratoArrayException in thread "main" java.lang.NullPointerException

at UsoErratoArray.main(UsoErratoArray.java:14)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 32 / 61

Page 48: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

L’intestazione del metodo main

public static void main(String[] args)

staticE un metodo statico

voidNon restituisce alcun valore

String[] argsRiceve come argomento il riferimento ad un array di stringhe

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 34 / 61

Page 49: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

L’intestazione del metodo main

public static void main(String[] args)

staticE un metodo statico

voidNon restituisce alcun valore

String[] argsRiceve come argomento il riferimento ad un array di stringhe

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 34 / 61

Page 50: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

L’intestazione del metodo main

public static void main(String[] args)

staticE un metodo statico

voidNon restituisce alcun valore

String[] argsRiceve come argomento il riferimento ad un array di stringhe

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 34 / 61

Page 51: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

L’intestazione del metodo main

public static void main(String[] args)

staticE un metodo statico

voidNon restituisce alcun valore

String[] argsRiceve come argomento il riferimento ad un array di stringhe

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 34 / 61

Page 52: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esecuzione del metodo main

public static void main(String[] args)

Quando si manda in esecuzione una classe:

La JVM cerca nel bytecode della classe un metodo statico con ilprototipo descritto sopra

Se lo trova, lo invoca passandogli come argomento il riferimentoall’array contenente le stringhe specificate nel comando di esecuzionedopo il nome della classe

Se non vengono forniti argomenti e l’array vuoto (cioe args.lengthvale 0)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 36 / 61

Page 53: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esecuzione del metodo main

public static void main(String[] args)

Quando si manda in esecuzione una classe:

La JVM cerca nel bytecode della classe un metodo statico con ilprototipo descritto sopra

Se lo trova, lo invoca passandogli come argomento il riferimentoall’array contenente le stringhe specificate nel comando di esecuzionedopo il nome della classe

Se non vengono forniti argomenti e l’array vuoto (cioe args.lengthvale 0)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 36 / 61

Page 54: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esecuzione del metodo main

public static void main(String[] args)

Quando si manda in esecuzione una classe:

La JVM cerca nel bytecode della classe un metodo statico con ilprototipo descritto sopra

Se lo trova, lo invoca passandogli come argomento il riferimentoall’array contenente le stringhe specificate nel comando di esecuzionedopo il nome della classe

Se non vengono forniti argomenti e l’array vuoto (cioe args.lengthvale 0)

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 36 / 61

Page 55: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

import prog.io.*;

class Ripeti {public static void main(String[] args) {ConsoleOutputManager out = new ConsoleOutputManager();

for (String s : args)out.println(s);

}}

Esecuzione

> java Ripeti PIPPO plutoPIPPOpluto

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 38 / 61

Page 56: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Esempio

import prog.io.*;

class Ripeti {public static void main(String[] args) {ConsoleOutputManager out = new ConsoleOutputManager();

for (String s : args)out.println(s);

}}

Esecuzione

> java Ripeti PIPPO plutoPIPPOpluto

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 38 / 61

Page 57: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Differenza fra array di oggetti e di tipo primitivo

String[] nomi = {"", "", "", ""};char[] inizali = {’G’, ’P’, ’M’, ’F’};

nomi

String[]

0 1 2 3

String

""

String

""

String

""

String

""

iniziali

char[]

0 1 2 3

'G' 'P' 'F''M'

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 40 / 61

Page 58: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Array multidimensionali

Array i cui elementi sono a loro volta array

Array bidimensionale (matrice)

int NANNI = 3;int NMESI = 12;Importo[][] entrate = new Importo[NANNI][NMESI];

entrate

entrate[0]

entrate[1]

entrate[2]

entrate[2][0] entrate[2][11]...

entrate[1][0] ... entrate[1][11]

entrate[0][0] ... entrate[0][11]

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 42 / 61

Page 59: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Dichiarazione e accesso

entrate

entrate[0]

entrate[1]

entrate[2]

entrate[2][0] entrate[2][11]...

entrate[1][0] ... entrate[1][11]

entrate[0][0] ... entrate[0][11]

Accesso all’elemento memorizzato nella seconda riga e terza colonna:

Importo i = entrate[1][2];

Dimensioni:Il numero delle righe e entrate.lengthIl numero delle colonne della riga i e matrice[i].length

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 43 / 61

Page 60: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Dichiarazione e accesso

entrate

entrate[0]

entrate[1]

entrate[2]

entrate[2][0] entrate[2][11]...

entrate[1][0] ... entrate[1][11]

entrate[0][0] ... entrate[0][11]

Accesso all’elemento memorizzato nella seconda riga e terza colonna:

Importo i = entrate[1][2];

Dimensioni:Il numero delle righe e entrate.lengthIl numero delle colonne della riga i e matrice[i].length

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 43 / 61

Page 61: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sommario: Array e collezioni

1 ArrayArray di oggettiLunghezza di un arrayAccesso agli elementi di un arrayArray e cicli for e for–eachInizializzazione di arrayL’intestazione del metodo mainArray di tipo primitivoArray di array

2 Classi genericheLa classe generica Sequenza<E>La classe generica SequenzaOrdinata<E>

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 44 / 61

Page 62: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica Sequenza<E>

Contratto

Le sue istanze rappresentano sequenze di oggetti di un tipo E, cioecollezioni di oggetti che possono contenere duplicazioni.Nella sequenza gli oggetti compaiono nell’ordine in cui sono stati inseriti.

Le classi e i tipi generici:

Indicati nella documentazione con una notazione del tipoSequenza<E>

E viene detto tipo parametro

Possiamo dire che la classe o il tipo e “Sequenza di E”

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 45 / 61

Page 63: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica Sequenza<E>

Contratto

Le sue istanze rappresentano sequenze di oggetti di un tipo E, cioecollezioni di oggetti che possono contenere duplicazioni.Nella sequenza gli oggetti compaiono nell’ordine in cui sono stati inseriti.

Le classi e i tipi generici:

Indicati nella documentazione con una notazione del tipoSequenza<E>

E viene detto tipo parametro

Possiamo dire che la classe o il tipo e “Sequenza di E”

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 45 / 61

Page 64: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica Sequenza<E>

Contratto

Le sue istanze rappresentano sequenze di oggetti di un tipo E, cioecollezioni di oggetti che possono contenere duplicazioni.Nella sequenza gli oggetti compaiono nell’ordine in cui sono stati inseriti.

Le classi e i tipi generici:

Indicati nella documentazione con una notazione del tipoSequenza<E>

E viene detto tipo parametro

Possiamo dire che la classe o il tipo e “Sequenza di E”

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 45 / 61

Page 65: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica Sequenza<E>

Contratto

Le sue istanze rappresentano sequenze di oggetti di un tipo E, cioecollezioni di oggetti che possono contenere duplicazioni.Nella sequenza gli oggetti compaiono nell’ordine in cui sono stati inseriti.

Le classi e i tipi generici:

Indicati nella documentazione con una notazione del tipoSequenza<E>

E viene detto tipo parametro

Possiamo dire che la classe o il tipo e “Sequenza di E”

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 45 / 61

Page 66: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Creazione di un oggetto di una classe generica

new Sequenza<String>()

E un oggetto in grado dimemorizzare una sequenza distringhe

new Sequenza<Frazione>()E un oggetto in grado dimemorizzare una sequenza difrazioni

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 46 / 61

Page 67: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Creazione di un oggetto di una classe generica

new Sequenza<String>()E un oggetto in grado dimemorizzare una sequenza distringhe

new Sequenza<Frazione>()E un oggetto in grado dimemorizzare una sequenza difrazioni

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 46 / 61

Page 68: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Creazione di un oggetto di una classe generica

new Sequenza<String>()E un oggetto in grado dimemorizzare una sequenza distringhe

new Sequenza<Frazione>()

E un oggetto in grado dimemorizzare una sequenza difrazioni

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 46 / 61

Page 69: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Creazione di un oggetto di una classe generica

new Sequenza<String>()E un oggetto in grado dimemorizzare una sequenza distringhe

new Sequenza<Frazione>()E un oggetto in grado dimemorizzare una sequenza difrazioni

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 46 / 61

Page 70: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Memorizzazione di un oggetto di un tipo generico

Sequenza<String> seq = new Sequenza<String>()

Sequenza<Frazione> = new Sequenza<Frazione>()

I tipi Sequenza<String> e Sequenza<Frazione> vengono detti tipiparametrizzati

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 48 / 61

Page 71: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Memorizzazione di un oggetto di un tipo generico

Sequenza<String> seq = new Sequenza<String>()

Sequenza<Frazione> = new Sequenza<Frazione>()

I tipi Sequenza<String> e Sequenza<Frazione> vengono detti tipiparametrizzati

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 48 / 61

Page 72: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Memorizzazione di un oggetto di un tipo generico

Sequenza<String> seq = new Sequenza<String>()

Sequenza<Frazione> = new Sequenza<Frazione>()

I tipi Sequenza<String> e Sequenza<Frazione> vengono detti tipiparametrizzati

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 48 / 61

Page 73: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Costruttori

public Sequenza()Costruisce una sequenza vuota.

Metodi

public boolean add(E o)Aggiunge alla fine della sequenza l’oggetto fornito tramitel’argomento e restituisce true.Nel caso come argomento venga fornito null, non modifica lasequenza e restituisce false.

public int size()Restituisce il numero di elementi presenti nella sequenza.

public boolean isEmpty()Restituisce true se e solo se la sequenza e vuota.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 49 / 61

Page 74: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Costruttori

public Sequenza()Costruisce una sequenza vuota.

Metodi

public boolean add(E o)Aggiunge alla fine della sequenza l’oggetto fornito tramitel’argomento e restituisce true.Nel caso come argomento venga fornito null, non modifica lasequenza e restituisce false.

public int size()Restituisce il numero di elementi presenti nella sequenza.

public boolean isEmpty()Restituisce true se e solo se la sequenza e vuota.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 49 / 61

Page 75: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Costruttori

public Sequenza()Costruisce una sequenza vuota.

Metodi

public boolean add(E o)Aggiunge alla fine della sequenza l’oggetto fornito tramitel’argomento e restituisce true.Nel caso come argomento venga fornito null, non modifica lasequenza e restituisce false.

public int size()Restituisce il numero di elementi presenti nella sequenza.

public boolean isEmpty()Restituisce true se e solo se la sequenza e vuota.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 49 / 61

Page 76: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Costruttori

public Sequenza()Costruisce una sequenza vuota.

Metodi

public boolean add(E o)Aggiunge alla fine della sequenza l’oggetto fornito tramitel’argomento e restituisce true.Nel caso come argomento venga fornito null, non modifica lasequenza e restituisce false.

public int size()Restituisce il numero di elementi presenti nella sequenza.

public boolean isEmpty()Restituisce true se e solo se la sequenza e vuota.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 49 / 61

Page 77: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Metodi

public boolean contains(E o)Restituisce true se e solo se la sequenza contiene un oggetto uguale(sulla base del criterio di uguaglianza fornito dal metodo equals) aquello specificato tramite l’argomento.

public E find(E o)Restituisce il riferimento al primo oggetto nella sequenza uguale aquello specificato tramite l’argomento, o null se tale oggetto non epresente.

public boolean remove(E o)Elimina dalla sequenza il primo oggetto uguale a quello specificatotramite l’argomento e restituisce true. Nel caso tale oggetto non visia, lascia la sequenza immutata e restituisce false.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 50 / 61

Page 78: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Metodi

public boolean contains(E o)Restituisce true se e solo se la sequenza contiene un oggetto uguale(sulla base del criterio di uguaglianza fornito dal metodo equals) aquello specificato tramite l’argomento.

public E find(E o)Restituisce il riferimento al primo oggetto nella sequenza uguale aquello specificato tramite l’argomento, o null se tale oggetto non epresente.

public boolean remove(E o)Elimina dalla sequenza il primo oggetto uguale a quello specificatotramite l’argomento e restituisce true. Nel caso tale oggetto non visia, lascia la sequenza immutata e restituisce false.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 50 / 61

Page 79: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza<E>

Metodi

public boolean contains(E o)Restituisce true se e solo se la sequenza contiene un oggetto uguale(sulla base del criterio di uguaglianza fornito dal metodo equals) aquello specificato tramite l’argomento.

public E find(E o)Restituisce il riferimento al primo oggetto nella sequenza uguale aquello specificato tramite l’argomento, o null se tale oggetto non epresente.

public boolean remove(E o)Elimina dalla sequenza il primo oggetto uguale a quello specificatotramite l’argomento e restituisce true. Nel caso tale oggetto non visia, lascia la sequenza immutata e restituisce false.

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 50 / 61

Page 80: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloConMemoria

...//predisposizione della "memoria"Sequenza<String> memo = new Sequenza<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//visualizzazione della sequenza

...per ogni elemento della sequenzavisualizzalo

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 52 / 61

Page 81: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloConMemoria

...//predisposizione della "memoria"Sequenza<String> memo = new Sequenza<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//visualizzazione della sequenza

...per ogni elemento della sequenzavisualizzalo

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 52 / 61

Page 82: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloConMemoria

...//predisposizione della "memoria"Sequenza<String> memo = new Sequenza<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//visualizzazione della sequenza

...per ogni elemento della sequenzavisualizzalo

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 52 / 61

Page 83: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza e ciclo for-each

E possibile scorrere gli elementi contenuti in un oggetto di tipoSequenza<E>, dal primo all’ultimo, utilizzando un ciclo for–each.

Sequenza<E> sequenza;...for (E elemento: sequenza)...usa elemento...

Esempio

Sequenza<String> memo = new Sequenza<String>();...//fase di scritturafor (String x : memo)out.println(x);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 54 / 61

Page 84: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza e ciclo for-each

E possibile scorrere gli elementi contenuti in un oggetto di tipoSequenza<E>, dal primo all’ultimo, utilizzando un ciclo for–each.

Sequenza<E> sequenza;...for (E elemento: sequenza)...usa elemento...

Esempio

Sequenza<String> memo = new Sequenza<String>();...//fase di scritturafor (String x : memo)out.println(x);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 54 / 61

Page 85: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Sequenza e ciclo for-each

E possibile scorrere gli elementi contenuti in un oggetto di tipoSequenza<E>, dal primo all’ultimo, utilizzando un ciclo for–each.

Sequenza<E> sequenza;...for (E elemento: sequenza)...usa elemento...

Esempio

Sequenza<String> memo = new Sequenza<String>();...//fase di scritturafor (String x : memo)out.println(x);

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 54 / 61

Page 86: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloConMemoria

...//predisposizione della "memoria"Sequenza<String> memo = new Sequenza<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//fase di scritturafor (String x : memo)out.println(x);

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 56 / 61

Page 87: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica SequenzaOrdinata

Contratto

Le sue istanze rappresentano sequenze ordinate di oggetti di tipo E.

Ad esempio:

Se E e il tipo Stringla sequenza e ordinata secondo l’ordine alfabetico

Se E e il tipo Frazione o il tipo Integerla sequenze e ordinata in maniera crescente

Se E e il tipo Datala sequenza e ordinata cronologicamente

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 57 / 61

Page 88: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica SequenzaOrdinata

Contratto

Le sue istanze rappresentano sequenze ordinate di oggetti di tipo E.

Ad esempio:

Se E e il tipo Stringla sequenza e ordinata secondo l’ordine alfabetico

Se E e il tipo Frazione o il tipo Integerla sequenze e ordinata in maniera crescente

Se E e il tipo Datala sequenza e ordinata cronologicamente

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 57 / 61

Page 89: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica SequenzaOrdinata

Contratto

Le sue istanze rappresentano sequenze ordinate di oggetti di tipo E.

Ad esempio:

Se E e il tipo Stringla sequenza e ordinata secondo l’ordine alfabetico

Se E e il tipo Frazione o il tipo Integerla sequenze e ordinata in maniera crescente

Se E e il tipo Datala sequenza e ordinata cronologicamente

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 57 / 61

Page 90: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

La classe generica SequenzaOrdinata

Contratto

Le sue istanze rappresentano sequenze ordinate di oggetti di tipo E.

Ad esempio:

Se E e il tipo Stringla sequenza e ordinata secondo l’ordine alfabetico

Se E e il tipo Frazione o il tipo Integerla sequenze e ordinata in maniera crescente

Se E e il tipo Datala sequenza e ordinata cronologicamente

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 57 / 61

Page 91: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloOrdinato

...//predisposizione della "memoria"SequenzaOrdinata<String> memo = new SequenzaOrdinata<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//fase di scritturafor (String x : memo)out.println(x);

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 59 / 61

Page 92: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloOrdinato

...//predisposizione della "memoria"SequenzaOrdinata<String> memo = new SequenzaOrdinata<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//fase di scritturafor (String x : memo)out.println(x);

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 59 / 61

Page 93: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

PappagalloOrdinato

...//predisposizione della "memoria"SequenzaOrdinata<String> memo = new SequenzaOrdinata<String>();

//fase di letturaString s = in.readLine();while (!s.equals("")) {memo.add(s);s = in.readLine();

}

//fase di scritturafor (String x : memo)out.println(x);

...

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 59 / 61

Page 94: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione

E possibile costruire sequenze di oggetti di un qualunque tipo

Possiamo usare qualunque tipo riferimento per istanziareil tipo parametro E di Sequenza<E>

Per costruire sequenze ordinate e necessario che il tipo degli elementisia “ordinabile”, cioe che sia definita una relazione di ordine totale trai suoi elementi.

Possiamo usare solo tipi riferimento su cui sia definita unarelazione di ordine totale per istanziare il tipo parametro Edi SequenzaOrdinata<E>

Esistono quindi delle limitazioni sulla genericita della classeSequenzaOrdinata che studieremo nel seguito

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 61 / 61

Page 95: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione

E possibile costruire sequenze di oggetti di un qualunque tipo

Possiamo usare qualunque tipo riferimento per istanziareil tipo parametro E di Sequenza<E>

Per costruire sequenze ordinate e necessario che il tipo degli elementisia “ordinabile”, cioe che sia definita una relazione di ordine totale trai suoi elementi.

Possiamo usare solo tipi riferimento su cui sia definita unarelazione di ordine totale per istanziare il tipo parametro Edi SequenzaOrdinata<E>

Esistono quindi delle limitazioni sulla genericita della classeSequenzaOrdinata che studieremo nel seguito

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 61 / 61

Page 96: Array e collezioni - Capitolo 5€¦ · Le posizioni di un array sono contate a partire da zero nome array[selettore] `e una variabile con: tipo tipo base dell’array valore il contenuto

Osservazione

E possibile costruire sequenze di oggetti di un qualunque tipo

Possiamo usare qualunque tipo riferimento per istanziareil tipo parametro E di Sequenza<E>

Per costruire sequenze ordinate e necessario che il tipo degli elementisia “ordinabile”, cioe che sia definita una relazione di ordine totale trai suoi elementi.

Possiamo usare solo tipi riferimento su cui sia definita unarelazione di ordine totale per istanziare il tipo parametro Edi SequenzaOrdinata<E>

Esistono quindi delle limitazioni sulla genericita della classeSequenzaOrdinata che studieremo nel seguito

c© 2005 Pearson Education Italia Capitolo 5 - Array e collezioni 61 / 61