Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 如何从Flux生成Mono_Java_Project Reactor_Reactive - Fatal编程技术网

Java 如何从Flux生成Mono

Java 如何从Flux生成Mono,java,project-reactor,reactive,Java,Project Reactor,Reactive,我有一个通量响应表,下面的响应是flux.FromIterablerResponses。我想将其转换为地图的Mono,如下所示: MonocollectMap= 其中company是第一个键,将为其生成另一个响应映射,并将category作为键 List< Response> responses = new ArrayList(){ { add(Response.builder().company("Samsung").cate

我有一个通量响应表,下面的响应是flux.FromIterablerResponses。我想将其转换为地图的Mono,如下所示:

Mono>>>collectMap=

其中company是第一个键,将为其生成另一个响应映射,并将category作为键

List< Response> responses = new ArrayList(){
            {
                add(Response.builder().company("Samsung").category("Tab").price("$2000").itemName("Note").build());
                add(Response.builder().company("Samsung").category("Phone").price("$2000").itemName("S9").build());
                add(Response.builder().company("Samsung").category("Phone").price("$1000").itemName("S8").build());
                add(Response.builder().company("Iphone").category("Phone").price("$5000").itemName("Iphone8").build());
                add(Response.builder().company("Iphone").category("Tab").price("$5000").itemName("Tab").build());
            }
        };
虽然我能够实现如下的初始映射

Mono<Map<String, Collection<Response>>> collect = Flux.<Response>fromIterable( responses )
                .collectMultimap( Response::getCompany );
有人知道我如何在这里实现我的目标吗。

我认为collectMultiMap或collectMap在这种情况下不能直接帮助您:


collectMultiMap及其重载只能返回Map@MuratOzkan,你的回答很有趣。在select*、User as tableName from User上,我获得了数据:对于许多表,我需要创建一个返回Json,在这里我指定表名及其数据。所以我返回:Mono alltablesDatas您知道怎么做吗。谢谢
return Flux.<Response>fromIterable( responses )
           .reduce(new HashMap<>(), (map, user) -> {
                map.getOrDefault(user.getId(), new HashMap<>())
                        .getOrDefault(user.getEmail(), new ArrayList<>())
                        .add(user);
                return map;
            });