// Esempio di programmazione funzionale con Java 8

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

// Nel seguito si implementano operazioni di somma, ricerca, estrazione  massimo, su una lista di interi tramite Stream
public class Importi {
	// Si dichiara e riempie la lista di valori interi 
	private List< Integer > importi = Arrays.asList(12, 34, 56, 78, 90, 45);
	
	// somma in stile funzionale
	public int calcolaSomma() {
		// si ottiene la somma tramite reduce e un'espressione lambda
		return importi.stream()
			.reduce(0, (accum, v) -> accum + v);
	}

	public int calcolaSommaImper() {
		int risultato = 0;
		for (int v : importi) risultato += v;
		return risultato;
	}

	public int estraiMassimo() {
		return importi.stream()
			.max(Integer::compare)
			.get();
	}

	public List< Integer > estraiValori(int val) {
		// si trovano gli elementi piu' grandi di un certo valore tramite filter
		return importi.stream()
			.filter(s -> s > val)
			.collect(Collectors.toList());
	}

	public String congiungi() {
		// si convertono e accumulano i valori tramite map e reduce 
		return importi.stream()
			.map(s -> String.valueOf(s))
			.reduce("", (res, v) -> res.concat(v));
	}
}
public class Test {
	public static void main(String[] args) {
		Importi imp = new Importi();
		int somma = imp.calcolaSomma();
		System.out.println("Somma: " + somma);
		if (somma == imp.calcolaSommaImper()) System.out.println("OK somma");
		int max = imp.estraiMassimo();
		System.out.println("Massimo: " + max);
		System.out.println("Valori estratti: "+ imp.estraiValori(67)+"\n");
		System.out.println("In stringa: "+imp.congiungi()+"\n");
	}
}

Output dell'esecuzione

Somma: 315
OK somma
Massimo: 90
Valori estratti: [78, 90]
In stringa: 123456789045