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

时间:2018-02-11 19:05:32

标签: java arrays

我有一个包含重复数据的数组,需要对此数组中的每个数据位置进行ID。有没有办法实现这一目标?

例如:Double [] array = {100, 200, 300, 400, 500, 100}; Java是否有办法告诉索引0中有一个100而索引5中有另一个?

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

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;
}

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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;
}

如果您使用的是Java 8,则可以使用:

private List<Integer> getArrayIndexJava8(double[] navdata, double data) {
    return IntStream.range(0, navdata.length).boxed()
            .filter(index -> navdata[index] == data)
            .collect(toList());
}

一个例子:

System.out.println(mcve.getArrayIndex(array, 100));
=>[0, 5]

答案 1 :(得分:0)

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

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