0

我正在写这个问题,因为我不知道如何为我需要的这个 dataModel 建模。

首先,这就是我所拥有的(我简单化了一点):我有一个List<Foo> list;where Foo 具有三个属性:

public class Foo {
    public int one;
    public int two;
    public long three;
}

现在我有另一个List<int> list2;

最重要的是:第一项list和第一项list2是对应的。

我想得到什么: 我想要一个结构,在其中我可以输入一,二,三然后得到对应的int

我对此感到厌烦:我找出了 1、2 和 3 的最大值,然后创建了一个int[maxOne][maxTwo][maxThree]并在循环中填充它:

int count = 0;
int[][][] daten = new int[maxOne][maxTwo][maxThree];
for (Foo foo : list)
{
    daten[foo.one][foo.two][foo.three] = list2[count];
    count++;
}

但这是一个坏主意,因为new int[maxOne][maxTwo][maxThree];需要非常多的内存,而不是需要这个 3 维数组中的每个值。

那么你的建议是什么?

4

1 回答 1

5

使用HashMap<Foo, Integer>; 只需确保覆盖hashcodeequals输入Fooequals应该很容易,请参阅本文以获取覆盖示例hashcode

于 2013-05-31T15:02:57.163 回答