teclas inmutables - Mapa de longitud fija en Java

DsCpp:

¿Hay alguna manera en Java para crear una colección (mapa) con tamaño fijo y la longitud? Es decir, me gustaría inicializarlo con claves constantes K (por ejemplo, cadenas), pero todavía quiere ser capaz de cambiar los valores.

Editar: El caso de prueba tiene un número fijo de objetos, cada uno corresponde a un número (float). Cada vez que un evento específico en la aplicación se produce, me gustaría para multiplicar todos los números en la colección, excepto el número que corresponde al objeto que "causado" el evento. El número no es lógicamente un attribiute del objeto.

Cardinal - Restablecer Mónica:

Te sugiero primer vistazo a la respuesta de Mike para tener una idea de cómo hacer para resolver este problema, a continuación, hacer algunos cambios en el código que proporciona por lo que funciona en su situación:

import java.util.HashMap;

public class InstrumentedHashMap<K> extends HashMap<K, Float> {

    private static final long serialVersionUID = 1L;
    private int MAX;

    public InstrumentedHashMap(int capacity) {
        super();
        MAX = capacity;
    }

    @Override
    public Float put(K key, Float value) {
        if (super.size() >= MAX && !super.containsKey(key)) {
            return null;
        } else {
            super.put(key, value);
            return value;
        }
    }

    public void event(K trigger, int multiplyAmount, float subtractAmount) {
        super.entrySet().stream().forEach(e -> {
            if (!e.getKey().equals(trigger))
                e.setValue(e.getValue() * multiplyAmount);
            else
                e.setValue(e.getValue() - subtractAmount);
        });
    }
}

Se puede utilizar el InstrumentedHashMap#eventmétodo para manejar su "evento específico", con el multiplyAmountparámetro es el valor que se desea multiplicar sus balsas por.

Supongo que te gusta

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