2012-03-15 49 views
0

我有這個表型號:這是在Java中建模矩陣的最佳方式?

-------------------------------------- 
| range | X<10 | 10<X<30 | 30<X<50 | 
|--------|---------------------------| 
| Y<5 | HIGH | MIDDLE | LOW  | 
|------------------------------------| 
| 5<Y<10 | MIDDLE| LOW | HIGH | 
|____________________________________| 

所以我必須將它在需要兩個參數(X和Y),並返回基於此表中的正確值的方法建模。

我以爲基於地圖的實現,但也許這不是最好的方法。 你會如何模型?

親切的問候 馬西莫

+0

在這種情況下,我會說方法中的「一些if語句」。 Java並不真正適用於解決像這樣的一次性小問題。 (使用地圖,n維陣列或其他支持對於更大的查找更有意義,但是......並非如此。) – 2012-03-15 07:34:41

+0

對於大量的維度,問題會更有趣:) – unludo 2012-03-15 08:24:06

回答

1

如何約兩地圖?

Map<Range, Map<Range, String>>() 

Range將舉行2個整數(上限和下限),你將需要實現equals()hashcode()爲了使Range,以適應'地圖」的性質。

所以,第一個MapX過濾和第二Map填充得到的值(HIGH,LOW等)

+1

它具有要提到的是,這些區域不應該重疊,否則'equals()'方法會產生不可預測的結果。 – bezmax 2012-03-15 07:51:36

+0

@Max,他們爲什麼不呢? equals()實現取決於你,所以你可以處理equals()代碼中的重疊。 – aviad 2012-03-15 09:19:17

2
private int getYIndex(int y) { 
    if (y < 5) return 0; 
    if (5 < y && y < 10) return 1; 
    return -1; // should never reach this case 
} 

private int getXIndex(int x) { 
    if (x < 10) return 0; 
    if (10 < x && x < 30) return 1; 
    if (30 < x && x < 50) return 2; 
    return -1; // should never reach this case 
} 

,那麼你可能只是有一個字符串的二維數組(字符串[ ] []),其中指數將從上述函數中給出。

+0

你的解決方案也是有效的,但我不能兩次投票... – 2012-03-15 16:38:42

相關問題