Ho svolto il seguente esercizio pero' ancora non capito bene l'interfaccia HashSet<T>.
L'esercizio e' il seguente e in allegato il file .jpg dove ho eseguito l'implementazione e la prova del programma .
Ho aggiunto dei commenti teorici su informazioni riguardanti l'interfaccia HashSet<T>.
Ho racchiuso il programma in un package e creato un main con due classi .
Il main si chiama ProveHashSet e le due classi rispettivamente Evento.java e Catastrofe.java.
IL problema e' che non ho capito fino in fondo cosa fa questo programma.
Il programma dovrebbe escludere da un insieme di numeri gli elementi uguali .
Dal risultato sembrerebbe che nell'anno 2000 ci sono stati un evento e due Catastrofi .
Pero' sembra non aver senso questo risultato semmai il contrario .
Voi cosa ne pensate ?
/* Obiettivo: comprensione uso HashSet<T>
La HashSet e' una delle nove interfacce disponibili nel Framwork collctions del package java.util.
L'interfaccia SET ammette oggetti [ non duplicati] identificabili univocamente tramite il metodo equals()
SET astrae il concetto di insieme matematico
- cosa stampa questo programma?
run:
set1.size()=1
set2.size()=2
BUILD SUCCESSFUL (total time: 0 seconds)
- compilare
compilazione OK
- eseguire il programma e verificare la propria risposta
*/
import java.util.*;
class Catastrofe {
private int anno;
Catastrofe(int anno) {
this.anno = anno;
}
}
class Evento {
private int anno;
Evento (int anno) {
this.anno = anno;
}
public int hashCode() {
return this.anno;
}
public int getAnno() {
return this.anno;
}
public boolean equals(Object o) {
Evento e = (Evento) o;
return this.anno == e.getAnno();
}
}
public class ProveHashSet {
public static void main(String[] argv) {
Set<Evento> set1 = new HashSet<Evento>(); // interfaccia HashSet vincolata alla classe Evento che contiene oggetti di tipo stato .
// set soddisfano una condizione, cioè se hanno una variabile booleana settata a true
Evento e = new Evento(2000); // Istanzio e inizializzo 'e'
set1.add(e); // add aggiunge elementi
e = new Evento(2000);
set1.add(e);
Set<Catastrofe> set2 = new HashSet<Catastrofe>(); // interfaccia HashSet vincolata alla classe Catastrofe verifica se nel 2000 ci sono
// state alluvione
Catastrofe c = new Catastrofe(2000);
set2.add(c);
c = new Catastrofe(2000);
set2.add(c);
System.out.println("set1.size()="+set1.size()); // Size ci indica la dimensione della nostra lista
System.out.println("set2.size()="+set2.size());
}
}
Allegati: