是什么
我在一个LinkedList
中, 频繁的调用get()
方法, 例如
LinkedList<Integer> maximumNulIndex = new LinkedList<>();
maximumNulIndex.add(1);
maximumNulIndex.add(1);
maximumNulIndex.add(1);
maximumNulIndex.add(1);
maximumNulIndex.add(1);
int[] ret = new int[maximumNulIndex.size()];
for (int i = 0; i < maximumNulIndex.size(); i++) {
ret[i] = maximumNulIndex.get(i);
}
为什么
这样就会特别的慢, 因为每一次都会去调用get, 都会涉及到一次时间复杂度为O(n)的寻址. 这样加上外层的循环, 时间复杂度就会变成 O ( n 2 ) O(n^2) O(n2)
怎么办
数组支持使用下标的快速随机访问, 有下标的情况下, 寻址的时间复杂度为 O ( 1 ) O(1) O(1)