Cómo incrementar la cuenta corriente en Java 8

user3342812:

Tengo Mapy Listque se parece

int total = 0;
int incr = 10;
Map<String, Boolean> hashMap = new HashMap();
hashMap.put("A", true);
hashMap.put("B", false);
hashMap.put("C", true);

List<String> states = new ArrayList<>();
states.add("A");
states.add("B");
states.add("D");
states.add("E");
states.add("F");

Cada vez que encuentro una clave de la lista en el Mapentonces quiero incrementar mi total en un valor de incremento;

states.stream()
            .filter(s -> hashMap.containsKey(s) && hashMap.get(s))
            .forEach((s) -> {total = total + incr;} );
Ravindra Ranwala:

La variable totaldebe ser final (es decir: llevar la palabra clave final), o sea efectivamente final (es decir: sólo se asigna un valor a la misma una vez fuera de la lambda). De lo contrario, no se puede utilizar esa variable dentro de su expresión lambda. Es posible fijarlo como este,

int total = states.stream()
    .filter(s -> hashMap.containsKey(s) && hashMap.get(s))
    .mapToInt(k -> incr).sum();

Como se menciona en el siguiente comentario, esto se puede simplificar aún más como,

int total = states.stream()
    .filter(s -> hashMap.getOrDefault(s, false))
    .mapToInt(k -> incr).sum();

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224634&siteId=1
Recomendado
Clasificación