2012-03-15 48 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

相关问题