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

使用Java流摆脱嵌套的for循环

拓拔弘化
2023-03-14

我正在迭代两个不同大小的列表:

List<Integer> array1 = new ArrayList<>();
array1.add(20);
array1.add(17);
array1.add(52);
array1.add(12);
array1.add(8);
array1.add(5);
array1.add(24);


List<Integer> array2 = new ArrayList<>();
array2.add(13);
array2.add(18);
array2.add(10);
array2.add(6);

我要做的是:遍历这两个列表并从array1中挑出所有元素,为此我可以在array2中找到一个元素,该元素与array1中的元素相加产生一定的和。

for (int i = 0; i < array1.size(); i++) {
    for (int j = 0; j < array2.size(); j++) {
        int sum = array1.get(i) + array2.get(j);
        if (sum == 30) {
           array3.add(array1.get(i));
        }
    }
}

有没有人知道我怎么用流来处理这个案子?

共有1个答案

勾喜
2023-03-14

如果您想摆脱嵌套循环,我建议您使用stream API

List<Integer> result = array1.stream()
      .filter(el1 -> array2.stream().anyMatch(el2 -> el1 + el2 == 30))
      .collect(Collectors.toList()) 
 类似资料:
  • 当一个函数依赖于一些未来的结果时,我一次又一次地挣扎。这通常归结为一个类似于Future[Seq[Future[MyObject]]的结果 为了摆脱这种情况,我现在在辅助函数中使用Aetc来获取一个非未来对象并减少嵌套。 它看起来像这样 这段代码有效,但对我来说,它看起来很笨拙。这两个映射调用是另一个缺陷。我花了几个小时试图弄清楚如何保持完全异步并返回一个简单的未来Seq。如何使用 Play2 最

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

  • 我在下面的代码中使用了嵌套的for循环,并且我有一些条件来中断内部的for循环,这提高了代码的性能。 现在,如何使用 Java 8 流来执行相同的逻辑?我想出了下面的代码: 在这里,我不能在java流中使用< code>break语句,所以我使用了< code>return语句,但它仍然运行内部循环,因为它不会中断内部循环,所以性能没有提高。

  • 问题内容: 在我的JS中,我需要使用AJAX获取3个文件的内容,然后执行一些代码。这导致嵌套异步函数的外观看起来很奇怪。同样在我使用异步功能的任何时候,都会出现这种丑陋的嵌套。 当我真的只想等待它们完成时,如何避免嵌套函数?(如果有帮助,我正在使用jQuery) 问题答案: 这有几种使用和不使用延迟的不同技术。在所有情况下,都会启动所有ajax调用,然后一段代码跟踪所有ajax调用何时完成,并在调

  • 我想使用Java8流API转换以下代码 我带着这个出来了 但我不喜欢它,因为它对列表有副作用。 有没有另一种优雅的方式,从一个流中产生一个列表?

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