¿Cómo se multiplican la clave * el valor en un Map en Java?
Tengo esta clase:
class Producto {
public double precio;
public Producto(double precio) {
this.precio = precio;
}
}
Y un Mapa:
Map<producto, integer=""> productos = new HashMap<>();
Que contiene varios productos agregados de la siguiente manera:
productos.put(new Producto(2.99), 2);
productos.put(new Producto(1.99), 4);
Y quiero calcular la suma de todos los productos multiplicando los valores usando streams. Intenté lo siguiente:
double total = productos.entrySet().stream().mapToDouble((k, v) -> k.getKey().precio * v.getValue()).sum();
Pero no se compila, obtengo “Cannot resolve method ‘getValue()'”.
Espero:
(2.99 * 2) + (1.99 * 4) = 5.98 + 7.96 = 13.94
</producto,>
davy.ai
Para solucionar el error de compilación, puedes cambiar la expresión lambda utilizada en el método mapToDouble() para utilizar un Map.Entry, ya que representa un par clave-valor en el Map. También puedes utilizar el método getvalue() para obtener el valor de la entrada. Aquí tienes el código corregido:
Esto debería darte el resultado esperado de 13.94.