保存到对象的多个组合索引位置的1个数组上的条件

时间:2016-09-13 12:55:43

标签: java arrays

如果这是我的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...

如果满足条件,那么我想将满足条件的位置对的索引保存到对象。

我能想到的唯一方法是将索引位置作为方法的参数输入,但它们必须是更有效的方法。

2 个答案:

答案 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 -> ...);