Le liste e gli insiemi sono collezioni di variabili Object
Si possono definire collezioni di tipi particolari
Esempio: lista di Point, insieme di Studente, ecc.
Lista di studenti:
import java.util.*;
class ListStud {
public static void main(String args[]) {
LinkedList<Studente> l;
l=new LinkedList<Studente>();
l.add(new Studente("Ciccio", 932222));
l.add(new Studente("Franco", 234325));
// errore
// l.add(new Point(20,30));
Studente s=l.get(1);
}
}
Si può specificare che una lista contiene solo elementi di un certo tipo:
LinkedList<Studente> l; l=new LinkedList<Studente>();
Una volta fatto questo, è come se la lista fosse una sequenza di variabili Studente, invece che una lista di variabili Object:
Tutto come al solito: dove si può mettere Studente si può mettere Borsista:
import java.util.*;
class ListStud {
public static void main(String args[]) {
LinkedList<Studente> l=new LinkedList<Studente>();
l.add(new Studente("Ciccio", 932222));
l.add(new Studente("Franco", 234325));
l.add(new Borsista("Io", 23433, 2300));
Studente s=l.get(1);
// errore
// Borsista b=l.get(2);
System.out.println(l);
}
}
Si possono anche realizzare metodi con liste parametrizzate:
import java.util.*;
class Metodo {
static int somma(LinkedList<Integer> l) {
int a=0;
for(int i=0; i<l.size(); i++) {
Integer x=l.get(i);
a=a+x.intValue();
}
return a;
}
public static void main(String args[]) {
LinkedList<Integer> l;
l=new LinkedList<Integer>();
l.add(new Integer(12));
l.add(new Integer(1));
l.add(new Integer(3));
System.out.println(somma(l));
}
}
È una facilitazione introdotta per semplificare programmi che usano i tipi Integer ecc.
L'idea è usare gli oggetti come fossero numeri e viceversa:
Integer i=12; int x=i;
import java.util.*;
class Metodo {
static int somma(LinkedList<Integer> l) {
int a=0;
for(int i=0; i<l.size(); i++) {
a=a+l.get(i);
}
return a;
}
public static void main(String args[]) {
LinkedList<Integer> l;
l=new LinkedList<Integer>();
l.add(12);
l.add(1);
l.add(3);
System.out.println(somma(l));
}
}
Il compilatore automaticamente converte:
Integer i=12; ---> Integer i=new Integer(12); int x=i; ---> int x=i.intValue();
In ogni caso, i resta una variabile oggetto e x resta una variabile intera.