在我的一个项目中,我使用了 ArrayList<ArrayList<Integer>>
作为图形数据结构。
所以图表是:
将等同于以下列表:
但是我改变了我的数据结构 ArrayList<ArrayList<Integer>>
至 Map<Integer, Set<Integer>>
,因此上面的同一个图形现在将等效于Map:
我选择 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];
有时我需要得到一个,两个或最多三个元素。
有没有改进第二个实现性能的想法?
1条答案
按热度按时间zfycwa2u1#
上面的代码行增加了额外的复杂性。使用迭代器进行优化,
有时您只需要很少的值,所以相应地迭代。