如何检查数组中的每个元素是否低于Java中的另一个数组?

时间:2015-10-17 07:44:47

标签: java arrays for-loop

现在我有以下想法:

int WORK[] = new int[]{5, 4, 3};
int release[] = new int[]{3, 2, 3};
boolean check = false;

for (int i = 0; i < WORK.length; i++)
{
     if (WORK[i] >= release[i]) 
     {
        for (int j = 0; j < WORK.length; j++)
        {
           if (WORK[j] >= release[j]) 
           {
               for (int k = 0; k < WORK.length; k++)
               {
                   if (WORK[k] >= release[k])
                   {
                       check = true;
                       System.out.print("All elements in work are bigger than release");
                       break;
                   }   
               }
               break;    
           } 
        }
        break;    
     }
}

if(!check)
{
     System.out.print("Not every element in work is bigger than release");
}

现在我想知道是否有更有效的方法来做到这一点?但我的主要问题是我需要使用n元素执行此操作。对于'n'元素,它既没有效率,也没有用,因为我不知道会有多少元素。

我想知道的是Java中有一个函数Arrays或其他什么东西可以帮助我吗?

任何帮助?

3 个答案:

答案 0 :(得分:1)

一种有效的方法是两个有4个变量 workmax,workmin,needmax,needmin。

一次迭代两个数组,找到该数组中的最大值和最小值。然后,您需要做的就是将一个数组的最小值与第二个数组的最大值进行比较 这样你只需要两个循环(没有嵌套)。 然后是一个简单比较的问题。 例如 if(workmin&gt; needmax)然后是System.out.print(&#34;&#34; + work +&#34;中的所有元素都大于需要&#34;);

如果您了解上述方法,我认为您可以提出代码。

答案 1 :(得分:1)

使用Java 8,您可以使用流的功能样式执行此操作(这将是性能优化;它只需要更少的代码编写)。

IntPredicate lowerThanRelease = i -> IntStream.of(release).allMatch(j -> i <= j);
boolean allLower = IntStream.of(work).allMatch(lowerThanRelease);

答案 2 :(得分:0)

我希望我能正确地回答你的问题。

if (array1.length == array2.length) {
    for (int i = 0; i < array1.length; i++) {
        for (int j =0; j < array2.length; j++) {
            // compare array1[i] with array2[j];
        }
    }
} else {
    System.out.println("Arrays have different lengths.");
}

这使您有机会将一个数组的所有数字与第二个数组的所有数字进行比较。所以你的基本想法并不那么糟糕。

希望它有所帮助。

这个看起来很基本,但应该这样做。