gpt4 book ai didi

java - 不可变键 - Java 中的固定长度映射

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:29 27 4
gpt4 key购买 nike

Java 有没有办法创建一个固定大小和长度的集合( map )?即,我想用 K 个常量键(例如字符串)初始化它,但仍然希望能够更改值。

编辑:测试用例有固定数量的对象,每个对象对应一个数字(float)。每次应用程序中发生特定事件时,我想将集合中的所有数字相乘,但与“导致”事件的对象相对应的数字除外。该数字在逻辑上不是对象的属性。

最佳答案

我建议您首先查看 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 参数是您要与 float 相乘的值。

关于java - 不可变键 - Java 中的固定长度映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com