需要一个使用Java集合映射值的建议。请建议

时间:2012-01-10 10:47:43

标签: java map hashmap

我们有一个配置,其中每个属性都映射到DB中的两个值,

例如:

Property Name           Min Value           Max Value

VSMSSUB                   100                500
EEVMSSUB                  100                500

现在,可以使用哪些集合来存储该属性,并且可以使用最大值? HashMap是不可能的,因为它是一对一的。

我可以这样声明吗?

HashMap中

需要使用豆子吗?

请建议您的建议。

4 个答案:

答案 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 ...

希望这有帮助

杰罗姆