当前位置: 首页 > 知识库问答 >
问题:

在Java8中使用嵌套for循环,找出给定的差异[duplicate]

曹建明
2023-03-14

我有下面的代码,我使用嵌套的循环,我有一些条件,打破了内部的循环,这提高了这段代码的性能。

假设提供的列表已排序。现在我想找到元素的数量,它们的差值等于某个值,比如说k

public static int getCount(List<Integer> list, int k) {
    int result = 0;
    for (int i = 0; i < list.size(); i++) {
        for (int j = i + 1; j < list.size(); j++) {
            if (list.get(j) - list.get(i) > k) {
                break;
            }
            if (list.get(j) - list.get(i) == k) {
                result++;
            }
        }
    }
    return result;
}

现在使用相同的逻辑Java8个流,这里为了跳过内部循环我已经使用了返回语句,但是由于内部循环没有被破坏,性能没有提高。

public static int getCount(List<Integer> list, int k) {
    int[] result = { 0 };
    IntStream.range(0, list.size()).forEach(i -> {
        IntStream.range(i + 1, list.size()).forEach(j -> {
            if (list.get(j) - list.get(i) >= k)
                return;
            if (list.get(j) - list.get(i) == k) {
                result[0]++;
            }
        });
    });
    return result[0];
}

共有1个答案

戚宏浚
2023-03-14

用以下内容替换您的内部IntStream.for每个(),看看它是否如预期的那样工作:

IntStream.range(i + 1, list.size())
        .filter(j -> list.get(j) - list.get(i) == k)
        .forEach(j -> result[0]++);
 类似资料:
  • 我在下面的代码中使用了嵌套的for循环,并且我有一些条件来中断内部的for循环,这提高了代码的性能。 现在,如何使用 Java 8 流来执行相同的逻辑?我想出了下面的代码: 在这里,我不能在java流中使用< code>break语句,所以我使用了< code>return语句,但它仍然运行内部循环,因为它不会中断内部循环,所以性能没有提高。

  • 和其他编程语言一样, Java 允许循环嵌套。如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环。 嵌套循环既可以是 for循环嵌套 while 循环,也可以是 while 循环嵌套 do-while 循环 …… 即各种类型的循环都可以作为外层循环,也可以作为内层循环。 当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只是

  • 问题内容: 我正在尝试使用嵌套的for循环显示一个星号菱形。 到目前为止,这是我的代码: 这很接近,但是我要两次打印9个星号。 如何调整第二个for循环以7个星号和2个空格开始输出? 谢谢您的帮助! 问题答案: 在您的第一个for循环中,删除=标记,然后使用<例如 完整代码

  • 对Java来说很新鲜,我在大学的一个入门班做一个项目。我正在尝试做一个方法,在String数组中搜索输入的状态并返回索引。如果用户输入不在数组中的查询,我希望它要求一个新的状态来搜索。我的例外是说“变量statePotion可能尚未初始化。”下面是代码。 提前谢谢!

  • 我对确定上述代码的BigO有点困惑。如果在最外层的循环中,则为(int x=1;x 然而,考虑到最外层循环迭代n 2次,这会改变bigO还是加法常数无关紧要的规则?最后,如果最内层循环迭代n 2次而不是n,会改变什么吗? 非常感谢。

  • 我有一个嵌套的for循环,但是它会减慢一点处理速度,我如何才能使嵌套循环高效。我需要的是对于外循环的每个值,内循环继续其所有迭代。但是,我不认为它会像两个嵌套循环那样影响计算。我的第二个问题是,循环会影响速度还是会支持我的现象? 我的代码: