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