Java id元素在具有重复值的数组中的位置

Java id元素在具有重复值的数组中的位置,java,arrays,Java,Arrays,我有一个包含重复数据的数组,需要标识该数组中的每个数据位置。有没有办法做到这一点 例如:Double[]数组={100200300400500100}Java有没有办法判断索引0中有一个100,索引5中有另一个100 我尝试使用循环,但意识到循环总是从第一个开始 private int getArrayIndex(double[] navdata, double data) { int k = 0; for(int i = 0; i < navdata.length

我有一个包含重复数据的数组,需要标识该数组中的每个数据位置。有没有办法做到这一点

例如:
Double[]数组={100200300400500100}Java有没有办法判断索引0中有一个100,索引5中有另一个100

我尝试使用循环,但意识到循环总是从第一个开始

private int getArrayIndex(double[] navdata, double data) {

     int k = 0;

     for(int i = 0; i < navdata.length; i++){

            if(navdata[i] == data){

                k=i;
                break;
            }
        }

    return k;
}
private int getArrayIndex(双[]导航数据,双数据){
int k=0;
对于(int i=0;i

提前谢谢

您的方法应该返回一个索引列表,而不仅仅是一个索引,因此您的解决方案应该是:

private List<Integer> getArrayIndex(double[] navdata, double data) {
//------^^^^^^^^^^^^^
    List<Integer> result = new ArrayList<>();
    for (int i = 0; i < navdata.length; i++) {
        if (navdata[i] == data) {
            result.add(i);
        }
    }

    return result;
}

这将生成与查询中找到的值匹配的数组索引

private int[] getIndices(double[] array, double query) {
    return IntStream.range(0, array.length)
        .filter(index -> array[index] == query)
        .toArray();
}

循环从0索引开始,因为使用i=0作为初始索引,使用break会导致循环在找到数据的第一个值时结束。
System.out.println(mcve.getArrayIndex(array, 100));
=>[0, 5]
private int[] getIndices(double[] array, double query) {
    return IntStream.range(0, array.length)
        .filter(index -> array[index] == query)
        .toArray();
}