1700443890
1700443891
sum+=list.get(i);
1700443892
1700443893
}
1700443894
1700443895
}else{
1700443896
1700443897
//有序存取,使用foreach方式
1700443898
1700443899
for(int i:list){
1700443900
1700443901
sum+=i;
1700443902
1700443903
}
1700443904
1700443905
}
1700443906
1700443907
//除以人数,计算平均值
1700443908
1700443909
return sum/list.size();
1700443910
1700443911
}
1700443912
1700443913
如此一来,列表的遍历就可以“以不变应万变”了,无论是随机存取列表还是有序列表,它都可以提供快速的遍历。
1700443914
1700443915
注意 列表遍历不是那么简单的,其中很有“学问”,适时选择最优的遍历方式,不要固化为一种。
1700443916
1700443917
1700443918
1700443919
1700443921
编写高质量代码:改善Java程序的151个建议 建议68:频繁插入和删除时使用LinkedList
1700443922
1700443923
上一个建议介绍了列表的遍历方式,也就是“读”操作,本建议将介绍列表的“写”操作:即插入、删除、修改动作。
1700443924
1700443925
(1)插入元素
1700443926
1700443927
列表中我们使用最多的是ArrayList,下面来看看它的插入(add方法)算法,源代码如下:
1700443928
1700443929
public void add(int index, E element){
1700443930
1700443931
/*检查下标是否越界,代码不再拷贝*/
1700443932
1700443933
//若需要扩容,则增大底层数组的长度
1700443934
1700443935
ensureCapacity(size+1);
1700443936
1700443937
//给index下标之后的元素(包括当前元素)的下标加1,空出index位置
1700443938
1700443939
System.arraycopy(elementData, index, elementData, index+1,size-index);
[
上一页 ]
[ :1.70044389e+09 ]
[
下一页 ]