Java 如何以函数方式生成具有复杂条件的对象?
我想根据一些条件创建一个Java对象列表。我想用函数式编程原理来实现这一点 我用.limit()查看了Stream.generate(),但我不能向limit添加谓词以使用条件停止。另外,我不知道如何将修改后的start OffSetDateTime传递给要创建的新对象Java 如何以函数方式生成具有复杂条件的对象?,java,functional-programming,Java,Functional Programming,我想根据一些条件创建一个Java对象列表。我想用函数式编程原理来实现这一点 我用.limit()查看了Stream.generate(),但我不能向limit添加谓词以使用条件停止。另外,我不知道如何将修改后的start OffSetDateTime传递给要创建的新对象 公共类测试{ 私有字符串名称; 专用OffsetDateTime时间戳; } 公共列表生成器对象(OffsetDateTime startTime){ ArrayList tests=新的ArrayList(); for(Of
公共类测试{
私有字符串名称;
专用OffsetDateTime时间戳;
}
公共列表生成器对象(OffsetDateTime startTime){
ArrayList tests=新的ArrayList();
for(OffsetDateTime start=startTime;start.isBefore(startTime.plusMinutes(100));start=start.plusMinutes(1)){
测试。添加(新测试(开始));
}
回归测试;
}
对于Java 9,您可以在for循环中已有的条件下使用三个参数:
public Stream<OffsetDateTime> generateTestObjects(OffsetDateTime startTime) {
return Stream.iterate(startTime, time -> time.isBefore(startTime.plusMinutes(100)),
time -> time.plusMinutes(1));
}
注意,我排除了到
Test
的映射,这相当于在使用Java 9调用collect
之前添加.map(Test::new)
,您可以在for循环中已有的条件下使用三个参数:
public Stream<OffsetDateTime> generateTestObjects(OffsetDateTime startTime) {
return Stream.iterate(startTime, time -> time.isBefore(startTime.plusMinutes(100)),
time -> time.plusMinutes(1));
}
请注意,我排除了到
Test
的映射,这相当于在调用collect
之前添加.map(Test::new)
,可以使用takeWhile
传递谓词来停止流,但是需要Java 11可以使用takeWhile
传递谓词来停止流,但是需要Java 11