我有这个代码,它是用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;
}
有没有关于我如何解决这个问题的建议?或者我应该注意什么?
我想你可以用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;
}
假设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步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此