Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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_Akka_Akka Stream - Fatal编程技术网

Java 筛选自定义数据类型的源

Java 筛选自定义数据类型的源,java,akka,akka-stream,Java,Akka,Akka Stream,我正在学习akka streams,并尝试使用我在下面编写的代码过滤源代码: import akka.NotUsed; import akka.actor.ActorSystem; import akka.stream.javadsl.Sink; import akka.stream.javadsl.Source; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.ut

我正在学习akka streams,并尝试使用我在下面编写的代码过滤源代码:

import akka.NotUsed;
import akka.actor.ActorSystem;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;

public class sd001 {

    private static final ActorSystem system = ActorSystem.create("akkassembly");
    private static List<RData> ls = new ArrayList();

    private static class RData {
        private String id;

        public RData(String id){
            this.id = id;
        }

        public List<Integer> getValues(){
            return Arrays.asList(1,2,3,4,5);
        }

        public String getId() {
            return this.id;
        }
    }

    final static List<RData> builderFunction() {
        try {
            ls.add(new RData("1"));
            ls.add(new RData("2"));
            ls.add(new RData("3"));
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return ls;
    }

    private static double calculateAverage(List <Integer> marks) {
        return marks.stream()
                .mapToDouble(d -> d)
                .average()
                .orElse(0.0);
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {

        final Source<List<RData>, NotUsed> source =
                Source.repeat(NotUsed.getInstance()).map(elem -> builderFunction());
        source.filter(x -> x.getId().equals("1"));

    }

}

通过阅读akka文档进行筛选:我应该能够筛选列表值?

使用
mapcontat
展平集合将显示所需结果:

 final Source<List<RData>, NotUsed> source =
                Source.repeat(NotUsed.getInstance()).map(elem -> builderFunction());
        source.mapConcat(i -> i)
                .filter(x -> x.getId().equals("1"))
最终源代码=
repeat(NotUsed.getInstance()).map(elem->builderFunction());
source.mapConcat(i->i)
.filter(x->x.getId().equals(“1”))

因为您得到的是
列表流
而不是
数据流
 final Source<List<RData>, NotUsed> source =
                Source.repeat(NotUsed.getInstance()).map(elem -> builderFunction());
        source.mapConcat(i -> i)
                .filter(x -> x.getId().equals("1"))