add callbacks

This commit is contained in:
orange 2016-12-29 17:36:27 +01:00
parent 22d2612baa
commit a790300c6f
5 changed files with 40 additions and 8 deletions

View File

@ -42,14 +42,23 @@ public class Archivio{
}
}
public Archivio filtroAutore(String autore){
Set<Opera> nuovoSet = new HashSet<Opera>();
for(Opera o: archivio)
if(o.getAutore().equals(autore))
nuovoSet.add(o);
public Archivio filtroStringa(FiltroStringa fs, String stringa){
Set<Opera> nuovoSet = new HashSet<Opera>();
for(Opera o: archivio)
if(fs.getString(o).equals(stringa))
nuovoSet.add(o);
return new Archivio(nuovoSet);
}
return new Archivio(nuovoSet);
}
public Archivio filtroAnno(int anno){
Set<Opera> nuovoSet = new HashSet<Opera>();
for(Opera o: archivio)
if(o.getAnno()==anno)
nuovoSet.add(o);
return new Archivio(nuovoSet);
}
private Set<Opera> archivio;
}

View File

@ -0,0 +1,6 @@
public class FiltroAutore implements FiltroStringa{
public String getString(Object obj){
return ((Opera) obj).getAutore();
}
}

View File

@ -0,0 +1,3 @@
public interface FiltroStringa{
String getString(Object obj);
}

View File

@ -0,0 +1,6 @@
public class FiltroTitolo implements FiltroStringa{
public String getString(Object obj){
return ((Opera) obj).getTitolo();
}
}

View File

@ -9,6 +9,14 @@ public class Test{
Archivio arch=new Archivio(scMult, scLibri, scStampe);
arch.filtroAutore("Autore1").print(System.out);
arch.filtroStringa(new FiltroTitolo(), "Titolo1").print(System.out);
System.out.println("****");
arch.filtroStringa(new FiltroAutore(), "Autore1").print(System.out);
System.out.println("****");
arch.filtroAnno(2000).print(System.out);
}
}