Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取列表中匹配值的每个索引_Java_List_Indexof - Fatal编程技术网

Java 如何获取列表中匹配值的每个索引

Java 如何获取列表中匹配值的每个索引,java,list,indexof,Java,List,Indexof,我有一个包含值0到10的10000个元素的列表。我想得到列表中包含特定值的所有索引。 实际上,我需要得到每个值的所有索引 最好的方法是什么 List<Integer> indexList = new ArrayList<Integer>(); for(int i=0; i<list.size(); i++){ if(list.get(i) == 0){ indexList.add(i); } } indexList包含值为0的所有索引 在这

我有一个包含值0到10的10000个元素的列表。我想得到列表中包含特定值的所有索引。 实际上,我需要得到每个值的所有索引

最好的方法是什么

List<Integer> indexList = new ArrayList<Integer>();
for(int i=0; i<list.size(); i++){
   if(list.get(i) == 0){
      indexList.add(i);
   }
}
indexList包含值为0的所有索引

在这里,代码数组是从两个方向跟踪的。
因此,在一个循环中,检查了2个值。这将性能从On提升到On/2。

您已经尝试了什么?我已经尝试了遍历列表,与答案相同。这是唯一的办法吗?如果我也想要所有其他值的位置呢?事实上我也需要它们编辑问题!欢迎来到堆栈溢出。不鼓励只使用代码的答案,特别是在这种情况下,您的答案没有太多意义。。。为什么你要从列表的两端开始,而不会在第一次循环中list.getj就出界了?谢谢。我试图打开循环,这样我们可以将时间从On减少到On/2。我在循环中添加了一个附加条件,iYou还应该包括一个关于代码的解释,以及为什么它会回答这个问题。你应该快点做,你的答案被标记为低质量记录,你所做的并没有真正减少时间。是的,现在理论上循环的大小为n/2,但每次通过循环进行5次比较,最多进行2次加法,总共进行5*n/2次比较,最多进行n次加法,而不是原始循环中的原始2*n次比较,最多进行n次加法。你仍然在做出界;您应该将j初始化为list.size-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);
   }
}