Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以函数方式生成具有复杂条件的对象?_Java_Functional Programming - Fatal编程技术网

Java 如何以函数方式生成具有复杂条件的对象?

Java 如何以函数方式生成具有复杂条件的对象?,java,functional-programming,Java,Functional Programming,我想根据一些条件创建一个Java对象列表。我想用函数式编程原理来实现这一点 我用.limit()查看了Stream.generate(),但我不能向limit添加谓词以使用条件停止。另外,我不知道如何将修改后的start OffSetDateTime传递给要创建的新对象 公共类测试{ 私有字符串名称; 专用OffsetDateTime时间戳; } 公共列表生成器对象(OffsetDateTime startTime){ ArrayList tests=新的ArrayList(); for(Of

我想根据一些条件创建一个Java对象列表。我想用函数式编程原理来实现这一点

我用.limit()查看了Stream.generate(),但我不能向limit添加谓词以使用条件停止。另外,我不知道如何将修改后的start OffSetDateTime传递给要创建的新对象

公共类测试{
私有字符串名称;
专用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