Java 7 ArrayList重复元素的索引给出了相同的索引值

Java 7 ArrayList重复元素的索引给出了相同的索引值,java-7,Java 7,我试图在ArrayList中找到重复元素2的索引-[1,2,3,4,2,5,6,2,7,2] 其输出应为[1,4,7,9]。但是我得到了[1,1,1,1]。请任何人帮助我获得正确的输出 package com.practice.first; import java.util.ArrayList; import java.util.List; public class SampleList { public static void main(String[] args) {

我试图在ArrayList中找到重复元素2的索引-[1,2,3,4,2,5,6,2,7,2]

其输出应为[1,4,7,9]。但是我得到了[1,1,1,1]。请任何人帮助我获得正确的输出

package com.practice.first;

import java.util.ArrayList;
import java.util.List;

public class SampleList {

    public static void main(String[] args) {

        List<Integer> al = new ArrayList<Integer>();
        al.add(1);
        al.add(2);
        al.add(3);
        al.add(4);
        al.add(2);
        al.add(5);
        al.add(6);
        al.add(2);
        al.add(7);
        al.add(2);

        for (int i = 0; i < al.size(); i++) {
            if (al.get(i).equals(2)) {
                System.out.println("Element 2 is present at " + al.indexOf(al.get(i)));         
            }
        }

    }
}
package com.practice.first;
导入java.util.ArrayList;
导入java.util.List;
公共类样本列表{
公共静态void main(字符串[]args){
List al=新的ArrayList();
al.添加(1);
al.添加(2);
al.添加(3);
al.添加(4);
al.添加(2);
al.添加(5);
al.添加(6);
al.添加(2);
al.添加(7);
al.添加(2);
对于(int i=0;i
来自:

返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。更正式地说,返回最低的索引i(o==null?get(i)==null:o.equals(get(i)),或者如果没有这样的索引,返回-1

因此,indexOf将始终返回元素的第一次出现,即使它在列表中多次出现。要获得正确的索引,只需打印循环变量
i
,如下所示:

for (int i = 0; i < al.size(); i++) {
    if (al.get(i).equals(2)) {
        System.out.println("Element 2 is present at " + i);         
    }
}
for(int i=0;i
您的问题在
al.indexOf(al.get(i))
中。发件人:

  • get(int index)
    返回此列表中指定位置的元素
  • indexOf(Object o)
    返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1
你可能只想:

System.out.println("Element 2 is present at " + i);