首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以用Stream向许多人映射一个元素吗?

我可以用Stream向许多人映射一个元素吗?
EN

Stack Overflow用户
提问于 2018-03-13 15:56:01
回答 1查看 49关注 0票数 0

是否可以使用Java流将一个集合映射到另一个集合,但第二个集合必须具有与第一个集合不同的元素计数?

我有地图

代码语言:javascript
复制
"1" -> 10, "2-3" -> 20

并希望将其转换为

代码语言:javascript
复制
List<Node> = Node(1,10), Node(2,20), Node(3,20)

我如何使用流来完成这个任务?

我的代码是:

代码语言:javascript
复制
import com.google.common.collect.ImmutableMap;

import java.util.*;

import static java.util.stream.Collectors.toList;

public class MapOneToManyQuestion {

    public static void main(String[] args) {
        new MapOneToManyQuestion().run();
    }

    void run() {
        final Map<String, Integer> map = ImmutableMap.of("1", 10, "2-3", 20);

        List<Node> nodes = map.entrySet().stream().map(entry -> {
            if (Objects.equals(entry.getKey(), "1")) {
                return new Node(1, entry.getValue());
            } else {
                //return new Node(2, entry.getValue());
                //return new Node(3, entry.getValue());
            }
        }).collect(toList());
    }

    class Node {
        private Integer key;
        private Integer value;

        public Node(Integer key, Integer value) {
            this.key = key;
            this.value = value;
        }

        public Integer key() {
            return this.key;
        }

        public Integer value() {
            return this.value;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 16:09:04

您可以为此使用flatMap

代码语言:javascript
复制
List<Node> nodes = map.entrySet()
        .stream()
        .flatMap(entry -> {
            String key = entry.getKey();
            Integer value = entry.getValue();
            return Arrays.stream(key.split("-"))
                    .map(splitKey -> new Node(Integer.valueOf(splitKey), value));
        })
        .collect(Collectors.toList());

它通过每个map元素流,并通过-拆分密钥,并为该条目的拆分和映射值为每个键部分创建一个Node对象,最后将其收集到一个列表中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49260561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档