我有一个包含重复数据的数组,需要对此数组中的每个数据位置进行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;
}
提前致谢。
答案 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();
}