import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; class StreamFilter { public static void main(String[] args) { List<Wrapper> list = new ArrayList<>(); list.add(new Wrapper("true")); list.add(new Wrapper("false")); list.add(new Wrapper("true")); BigDecimal total = list .stream() .filter(w -> "true".equals(w.getFilter())) // optional .map(Wrapper::getValue) .reduce(BigDecimal.ZERO, BigDecimal::add); System.out.println(total); // it will print 20 } } class Wrapper { BigDecimal value; String filter; Wrapper(String filter) { value = BigDecimal.TEN; // mocked value this.filter = filter; } public BigDecimal getValue() { return value; } public String getFilter() { return filter; } }