// Esempio di programmazione funzionale con Java 8
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class ListaPersone {
private List< Persona > pe = Arrays.asList(new Persona("Saro", 24), new Persona("Taro", 21),
new Persona("Ian", 19), new Persona("Al", 16));
public void estraiEtaPersone() {
List< Integer > e = pe.stream()
.map(x -> x.getEta())
.collect(Collectors.toList());
System.out.println("estrai eta: " + e);
}
public void sommaEtaPersone() {
int s = pe.stream()
.map(Persona::getEta)
.reduce(0, (v, t) -> v + t);
System.out.println("somma eta: " + s);
}
public void trovaPersona() {
Comparator< Persona > c = Comparator.comparing(x -> x.getEta());
Optional< Persona > pmax = pe.stream()
.filter(x -> x.giovane())
.max(c);
if (pmax.isPresent()) System.out.println("trova persona: " + pmax.get().getNome());
}
public void trovaPersonaImper() {
Persona pmax = null;
for (Persona x : pe)
if (x.getEta() < 26) {
if (pmax == null) pmax = x;
if (pmax.getEta() < x.getEta()) pmax = x;
}
if (pmax != null) System.out.println("persona: " + pmax.getNome());
}
}
public class Persona {
private String nome;
private int eta;
public Persona(String n, int e) {
nome = n;
eta = e;
}
public boolean giovane() {
return eta < 26;
}
public int getEta() {
return eta;
}
public String getNome() {
return nome;
}
}
public class Test {
public static void main(String[] args) {
ListaPersone cp = new ListaPersone();
cp.estraiEtaPersone();
cp.sommaEtaPersone();
cp.trovaPersona();
}
}
Output dell'esecuzione
estrai eta: [24, 21, 19, 16]
somma eta: 80
trova persona: Saro