2012-01-10 61 views
1

我們每個屬性映射到兩個值在DB,需要使用Java集合來映射值的建議。請建議

防爆配置:

Property Name   Min Value   Max Value 

VSMSSUB     100    500 
EEVMSSUB     100    500 

現在,收集可以用來存儲性能而最小&最大值? HashMap是不可能的,因爲它是一對一的。

我可以這樣申報嗎?

的HashMap

需要用豆?

請建議您的建議。

回答

2

您可以使用屬性名稱爲key的HashMap以及保留最小值和最大值的複合對象。例如:

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); 
6

使用存儲在其中的最小 - 最大值作爲字段的複合對象。

class MinMax { 
    private int min; 
    private int max; 
    //getters, setters 
} 

Map<String, MinMax> map = new HashMap<String, MinMax>(); 

這是一種常見的做法,看起來並不醜陋。

1

您可以更改整型數據類型

HashMap<String, Integer[]> 
HashMap<String, YourBeanClass> // (YourBeanClass has min and max members) 
HashMap<String, List<Integer>> 
+0

這看起來不像一個正確的語法... – bezmax 2012-01-10 10:55:37

+0

對不起,由於某種原因,它不會讓我失望。 – bezmax 2012-01-10 11:02:31

+0

謝謝@Max,我犯了一個錯字。 – 2012-01-10 11:03:46

0

我認爲正如其他人所說的那樣r回答您正面臨一個非常常見的用例,並且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 ...

希望這可以幫助

傑羅姆

+0

嗯,我真的不同意你使用泛型來存儲域數據。每個域都應該有它自己的特定對象,這使得系統解耦,並且在未來更容易更改。因此,對於我的FoodDatabase數據訪問層,我將創建一個包含「int min,int max」的「MinMaxCalories」類,並且對於我的SalaryDatabase,我將創建一個也包含「int min,int max」的單獨的「MinMaxDollars」類。如果在這兩種情況下使用相同的泛型類,嘗試使用新數據擴展Salary數據庫時會遇到麻煩。因此,我建議不要使用域名信息的泛型。 – bezmax 2012-01-10 12:57:49