Java8:流相同的流中的映射的两个属性

Sunflame:

我有一个类Model具有以下特征:

class Model {
        private String stringA;
        private String stringB;

        public Model(String stringA, String stringB) {
            this.stringA = stringA;
            this.stringB = stringB;
        }

        public String getStringA() {
            return stringA;
        }

        public String getStringB() {
            return stringB;
        }
}

我想一个映射List<Model>到一个List<String>在单个流含有stringA和stringB

List<String> strings = models.stream()
                .mapFirst(Model::getStringA)
                .thenMap(Model::getStringB)
                .collect(Collectors.toList());

要么:

List<String> strings = models.stream()
                .map(Mapping.and(Model::getStringA,Model::getStringB))
                .collect(Collectors.toList());

当然,他们没有编译,但你的想法。

是它在某种程度上可能吗?

编辑:

例:

Model ab = new Model("A","B");
Model cd = new Model("C","D");
List<String> stringsFromModels = {"A","B","C","D"};
奥斯曼·d:

你可以拥有所有的值一个又一个像这样的列表:

List<String> resultSet =
               modelList.stream()
                        .flatMap(e -> Stream.of(e.getStringA(), e.getStringB()))
                        .collect(Collectors.toList());

传递给该函数flatMap将被应用到每个元素产生一个Stream<String>使用的flatMap是必要这里展开全部嵌套Stream<Stream<String>>Stream<String>,因此使我们能够收集要素引入List<String>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章