Я пишу этот вопрос, потому что я не знаю, как смоделировать этот dataModel, который мне нужен.как смоделировать этот datamodel без большого пространства?
Прежде всего, это то, что у меня есть (я simplyfied это немного): У меня есть List<Foo> list;
где Foo имеет три атрибута:
public class Foo {
public int one;
public int two;
public long three;
}
теперь у меня есть другой List<int> list2;
Самое главное: первый элемент в list
и первый в list2
соответствуют.
Что я хочу получить: Я хочу, чтобы иметь структуру, порог можно ввести один, два, три, а затем получить соответствующий int
Я устал это: я узнал макс значения одного, два и три, а затем создали 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 dimensinal массива необходимо.
Итак, какова ваша рекомендация?
Просто пройти через 'list'. Или создайте ** двоичное дерево поиска **, если производительность является проблемой. – johnchen902
Создавайте объекты, ставьте ассоциации, не используйте многомерные структуры. –
Я думаю, вы можете использовать [SparceArray] (http://en.wikipedia.org/wiki/Sparse_array) –