繁体   English   中英

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

[英]How to check if every element in an array is lower than another array in Java?

现在,我有以下想法:

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有什么功能或可以帮助我的功能吗?

有什么帮助吗?

使用Java 8,您可以使用流的功能样式来完成此操作(这不是性能优化;只需要编写较少的代码即可)。

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

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

一次遍历两个数组,然后找到该数组中的最大值和最小值。 然后,您要做的就是将一个数组的最小值与第二个数组的最大值进行比较。这样,您只需要两个循环(无嵌套)。 那么这是一个简单的比较问题。 例如,如果(workmin> needmax),则System.out.print(“ + work +”中的所有元素都大于需求“);

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

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

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.");
}

这使您有机会比较一个数组的所有数字和第二个数组的所有数字。 因此,您的基本想法还不错。

希望能帮助到你。

这似乎很基础,但应该这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM