如果这是我的int数组
anArray[0] = 10;
anArray[1] = 10;
anArray[2] = 1;
anArray[3] = 0;
anArray[4] = 0;
anArray[5] = 1;
如何在阵列中搜索满足条件的两个位置。 我想搜索以下索引组合,看看它们是否都包含> = 1。
0 and 1
0 and 2
0 and 3
0 and 4
0 and 5
1 and 2
1 and 3
1 and 4
1 and 5
2 and 3
2 and 4
2 and 5
etc...
如果满足条件,那么我想将满足条件的位置对的索引保存到对象。
我能想到的唯一方法是将索引位置作为方法的参数输入,但它们必须是更有效的方法。
答案 0 :(得分:2)
int max = anArray.length;
for (int i = 0; i < max; i++) {
for (int k = i + 1; k < max; k++) {
if (anArray[i] >= 1 && anArray[k] >= 1) {
/* Do something */
}
}
}
答案 1 :(得分:0)
我不确定将索引设置为对象&#39;手段。但是,这是一个解决方案,可以找到满足您条件的所有指数组合:
IntStream.range(0, array.length)
.filter(i -> array[i] >= 1)
.forEach(i -> IntStream.range(i + 1, array.length)
.filter(j -> array[j] >= 1)
.forEach(j -> ...);