我们有一个配置,其中每个属性都映射到DB中的两个值,
例如:
Property Name Min Value Max Value
VSMSSUB 100 500
EEVMSSUB 100 500
现在,可以使用哪些集合来存储该属性,并且可以使用最大值? HashMap是不可能的,因为它是一对一的。
或
我可以这样声明吗?
HashMap中
或
需要使用豆子吗?
请建议您的建议。
答案 0 :(得分:6)
使用最小值存储的复合对象作为字段。
class MinMax {
private int min;
private int max;
//getters, setters
}
Map<String, MinMax> map = new HashMap<String, MinMax>();
这是一种常见做法,看起来并不丑陋。
答案 1 :(得分:2)
您可以使用具有属性名称的HashMap
作为键,并使用包含min和max作为值的复合对象。例如:
public class Value {
private int minValue;
private int maxValue;
public Value(int min, int max) {
minValue = min;
maxValue = max;
}
}
然后创建一个HashMap
:
HashMap<String, Value> map = new HashMap<String, Value>();
并添加键值:
map.put("VSMSSUB", new Value(100, 500);
map.put("EEVMSSUB", new Value(100, 500);
答案 2 :(得分:1)
您可以将整数更改为数据类型
HashMap<String, Integer[]>
HashMap<String, YourBeanClass> // (YourBeanClass has min and max members)
HashMap<String, List<Integer>>
答案 3 :(得分:0)
我认为,如其他答案所述,您面临着一个非常常见的用例,并且Bean解决方案远非反模式......在不同的应用程序中,我使用此类策略添加更多数据,如默认值或平均值(并不总是数学平均值),但最常用... 所以使用像
这样的类public class DefaultChoicesBean <T> {
private T minValue;
private T maxValue;
private T medianValue;
private T defaultValue;
public T getMinValue() {
return minValue;
}
public void setMinValue(T minValue) {
this.minValue = minValue;
}
public T getMaxValue() {
return maxValue;
}
public void setMaxValue(T maxValue) {
this.maxValue = maxValue;
}
public T getMedianValue() {
return medianValue;
}
public void setMedianValue(T medianValue) {
this.medianValue = medianValue;
}
public T getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(T defaultValue) {
this.defaultValue = defaultValue;
}
}
你可以使用泛型来避免多次编写相同的代码...... 这个类很适合应用程序学习过去的用户选择,所以中值可以是一个自动的adatptative ...
希望这有帮助
杰罗姆