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

使用编写for循环。地图()

墨承泽
2023-03-14

我有这个代码,它是用for循环实现的。我想用一个字母来写。流和。map()函数。我试着用这个。map()函数。但不幸的是,我得到了以下错误:

不兼容的类型。必填列表

这里是旧代码:

 public Iterable<Record> findAll(final List<Long> id) {
        final List<Record> result = new LinkedList<Record>();
        final List<List<Long>> partitions = ListUtils.partition(id, 10);
        for (List<Long> partition : partitions) {
            Iterables.addAll(
                    result,
                    this.repository.findAll(partition) 
            );
        }
        return result;
    }

这是我使用。地图()

   public Iterable<Record> findAll(final List<Long> id) {
        final List<Record> result = new LinkedList<Record>();
        final List<List<Long>> partitions = ListUtils.partition(id, 10);

         List<List<Long>> allPartitions = partitions.stream().map(partition ->{
            return Iterables.addAll(result, this.repository.findAll(partition));
        }).collect(Collectors.toList());

        return result;
    }

有没有关于我如何解决这个问题的建议?或者我应该注意什么?

共有2个答案

吕俊美
2023-03-14

我想你可以用forEach重放for循环:

public Iterable<Record> findAll(final List<Long> id) {
    final List<Record> result = new LinkedList<Record>();
    final List<List<Long>> partitions = ListUtils.partition(id, 10);
    partitions.forEach(partition -> Iterables.addAll(result, this.repository.findAll(partition)));
    return result;
}
步骏
2023-03-14

假设this.repository.findAll(分区)返回Iterable

public Iterable<Record> findAll(final List<Long> id) {
    return ListUtils.partition(id, 10).stream()
        .flatMap(partition -> StreamSupport.stream(
                this.repository.findAll(partition).spliterator(), false))
        .collect(Collectors.toList());
}

只有当findAll返回Iterable而不是Collection时,才需要这种复杂的Stream构造。如果它返回Collection,您可以简单地使用:

public Iterable<Record> findAll(final List<Long> id) {
    return ListUtils.partition(id, 10).stream()
        .flatMap(partition -> this.repository.findAll(partition).stream())
        .collect(Collectors.toList());
}

在这方面,你不应该给你的方法的调用方带来同样的负担,并考虑从“代码>迭代中改变返回类型。

另一个需要考虑的问题是,当您检索所有记录时,在这些小块中执行此操作是否真的有任何好处。
那么为什么不直接使用返回this.repository.findAll(id);...

 类似资料:
  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:

  • 本文向大家介绍详解Swift编程中的for循环的编写方法,包括了详解Swift编程中的for循环的编写方法的使用技巧和注意事项,需要的朋友参考一下 for 循环是一个循环控制结构,可以有效地编写来执行的特定次数的循环。 语法 for 循环在 Swift 编程语言的语法是: 下面是在一个循环的流程控制: 初始化 init 步骤首先被执行,并且仅一次。在这一步,可以声明和初始化任何循环控制变量。 只要

  • for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Perl编程语言中for循环的语法是 - for ( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此处输入声明。

  • ' for '循环是最紧凑的循环形式。 它包括以下三个重要部分 - loop initialization ,我们将计数器初始化为起始值。 初始化语句在循环开始之前执行。 test statement将测试给定条件是否为真。 如果条件为真,则执行循环内给出的代码,否则控件将退出循环。 iteration statement ,您可以在其中增加或减少计数器。 您可以将所有三个部分放在一行中以分号分隔

  • 问题 你想通过一个 for 循环来迭代数组、对象或范围。 解决方案 # for(i = 1; i<= 10; i++) x for x in [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] # To count by 2 # for(i=1; i<= 10; i=i+2) x for x in [1..10] by 2 # => [ 1, 3, 5,

  • for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Objective-C编程语言中for循环的语法是 - for( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此