我有一个包含0到10值的列表(10000个元素)。我想获得包含特定值的列表的所有索引。 (实际上我需要得到每个值的所有索引)。
这样做的最佳方式是什么?
答案 0 :(得分:1)
List<Integer> indexList = new ArrayList<Integer>();
for(int i=0; i<list.size(); i++){
if(list.get(i) == 0){
indexList.add(i);
}
}
indexList
包含值为0
答案 1 :(得分:-1)
List<Integer> indexList = new ArrayList<Integer>();
for(int i=0, j=list.size(); i<list.size()&& j>0 && i<=j; i++,j--){
if(list.get(i) == 0){
indexList.add(i);
}
if(list.get(j) == 0){
indexList.add(j);
}
}
这里的代码数组是从两个方向追踪的。 因此,在一个循环中,将检查2个值。这提高了从O(n)到O(n / 2)的性能。