Java中是否有一种方法可以创建具有固定大小和长度的集合(地图)? 也就是说,我想使用K个常量键(例如字符串)对其进行初始化,但仍然希望能够更改其值。
编辑: 测试用例具有固定数量的对象,每个对象对应一个数字(浮点数)。每次应用程序中发生特定事件时,我都希望将集合中的所有数字相乘,除了与“引起”该事件的对象相对应的数字。 从逻辑上讲,该数字不是对象的属性。
答案 0 :(得分:1)
我建议您首先查看Mike's answer,以了解如何解决此问题,然后对他提供的代码进行一些更改,以使其适合您的情况:
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);
});
}
}
您可以使用InstrumentedHashMap#event
方法来处理“特定事件”,其中multiplyAmount
参数是要乘以浮点数的值。