Collections List, Set, Map

COLLECTION

La collection è un’interfaccia principale.
è la più astratta in assoluta.
è una collezione di oggetti omogenei che non ha vincoli sul numero massimo di elementi, può essere ordinata o meno e accetta elementi duplicati.
Sulla base di questa interfaccia sono state modellate altre interfacce List, Set, Map.

LIST

è una lista di elementi che non garantisce l’ordinamento degli elementi.
Per utilizzare una lista abbiamo a disposizione le classi concrete ArrayList o LinkedList.

Consultare le API per avere conoscenza dei vari metodi a disposizione. Esiste il metodo .get(indicePosizione) per ottenere elemento avendo l’indice.
Ed il metodo .contains(elemento) per capire se contiene quell’elemento.

Per utilizzare le liste bisogna importare le classi.

import java.util.List;
import java.util.ArrayList;

//esempio lista di interi
List<Integer> lista = new ArrayList<>();
//esempio lista di qualsiasi classe che creiamo come Libro o Pizza
List<Libro> libreria = new ArrayList<>();


//Si legge cosi: PER ogni "Integer" che chiamiamo "e" della lista : "lista"
for (Integer e:lista)
System.out.println(e);

//per stampare possiamo direttamente passare il nome della lista a un println
System.out.println(lista);
//NB ha funzionato per lista perché è un ArrayList di Integer, che fa già ovverride del metodo toString
se vogliamo che funzioni per le classi che creiamo noi dobbiamo prima provvedere a fare override di toString. 

System.out.println(libreria);


lista.add(14);
lista.add(10);
lista.add(14);
		
System.out.println(lista.get(0)); //stampa il 14

System.out.println(lista.size()); // risultato 3 perché List accetta i duplicati 

//rimuove elemento dato un indice		
lista.remove(1); //rimuove il n°10 

//altro metodo add che accetta anche indice. 
//aggiunge in indice 1 il numero 85
lista.add(1,85); 

SET

l’interfaccia Set modella un insieme. La utilizziamo quando abbiamo bisogno di gestire una lista che non può avere duplicati quindi è molto importante se creiamo una lista set di una classe che abbiamo creato noi, fare l’override dei metodi equals e hashCode. Per dire a Java cosa abbiamo deciso di tenere da conto per dire che due oggetti sono uguali.

Esistono due implementazioni per Set:

  • HashSet – gli elementi non sono ordinati
  • TreeSet – gli elementi sono ordinati
import java.util.Set;
import java.util.HashSet;

//inizializzare un set con treeset o hashset
Set pizzeria = new TreeSet<>();
Set pizzeria = new HashSet<>();

Set set = new HashSet<>();
set.add(7);
set.add(6);
set.add(7);

System.out.println(set.size());//risultato 2 perchè non permette di aggiungere proprio due numeri uguali essendo un insieme.

NB se mi serve che gli elementi siano anche ordinati devo usare un TreeSet ma devo implementare Comparable o fornire un comparator alla classe degli elementi che inserisco all’interno del Set in modo che il metodo add possa inserire l’elemento nella posizione corretta.

MAP

Rappresenta delle associazioni tra chiavi e valori. Non ammette chiavi duplicate.

Esistono due implementazioni per Map:

  • HashMap – gli elementi non sono ordinati
  • TreeMap – gli elementi sono ordinati per Chiave

A cosa serve? Esempio: chiave = nome utente e valore=password

Map menu = new HashMap<>();
		
		menu.put("Margherita", 5);
		menu.put("Diavola", 7);
		menu.put("Margherita", 4);
		
		System.out.println(menu.size());

//METODO FOR PER IL MAP vedi testo sotto spiegato meglio
for(Map.Entry entry:menu.entrySet()) {
   System.out.println(entry.getKey());	//margherita, diavola
   System.out.println(entry.getValue());//7,4
}

menu.put("Prosciutto", 5);
menu.remove("Margherita");

System.out.println(menu);

le Map non si possono iterare perché hanno un Tipo complesso fatto di coppie di valori, cui possiamo aggirare cosi.
Le mappe per poter iterare i loro valori, hanno un metodo EntrySet() che ci rende un insieme

Set>

Creiamo quindi un Set (che invece si può iterare) di tipo Entry costituito dalle stesse Chiave e Valore.
e faccio un for letto cosi: per ogni elemento della classe Entry Persona elemento “e” contenuto nella lista listaentries…

for(Entry e: listaentries)

Ecco esempio completo:

import java.util.Map;

Set > listaentries = map.EntrySet();
for(Entry e: listaentries){
 System.out.println(e.getKey());
 System.out.println(e.getValue());
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *