Для одного из моих проектов я использовал ArrayList<ArrayList<Integer>>
в качестве структуры данных графика.
Итак, график:
будет эквивалентно списку списков ниже:
Но я изменил свою структуру данных с ArrayList<ArrayList<Integer>>
на Map<Integer, Set<Integer>>
,поэтому тот же самый график выше теперь будет эквивалентен карте:
Одна из причин, по которой я выбрал Set
, заключается в том, что каждый списокдолжен содержать только уникальные элементы.
Выбор Map
был сделан для простоты манипулирования структурой данных.
Проблема в том, что когда я изменил структуру данных, производительность снизилась почтив 2 раза.
Вот наиболее часто используемые операции в моем проекте:
В первой реализации:
int index = someIndex();
int v1 = listoflists.get(index).get(0);
int v2 = listoflists.get(index).get(1);
Во второй реализации:
int index = somIndex();
Set<Integer> sets = map.get(index);
Integer[] set = sets.toArray(new Integer[sets.size()]);
int v1 = set[0];
int v2 = set[1];
Иногда мне нужно получить один, два или максимум три элемента.
Любая идея улучшить производительность второй реализации