java8 stream的flatMap如何返回一个新的类?

发布于 2022-09-06 11:55:42 字数 728 浏览 23 评论 0

有一个List<String> fileNames,存放的是附件的名字集合。

要把这个fileNames,转成Enclosure类的List,通过stream操作。

public class Enclosure {
    private int enclosureId;
    private String path;
    private Timestamp uploadTime;
    private String path;
    private String name;
}

我现在的代码

List<Enclosure> list = fileNames.stream().flatMap(i -> {
                Enclosure enclosure = new Enclosure();
                enclosure.setUploadTime(new Timestamp(System.currentTimeMillis()));
                enclosure.setName(i);
                enclosure.setPath("testurl"+ i);
                return enclosure;
            }).collect(Collectors.toList());

有语法错误,不知道应该如何写。求教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

咽泪装欢 2022-09-13 11:55:42

将flatMap换成map即可

        List<String> fileNames = new ArrayList<>();
        fileNames.add("aaa");
        fileNames.add("bbb");
        fileNames.add("ccc");
        List<Enclosure> list = fileNames.stream().map(i ->
        {
            Enclosure enclosure = new Enclosure();
            enclosure.setName(i);
//            enclosure.setUploadTime(new Timestamp(System.currentTimeMillis()));参数错误
            enclosure.setPath("testurl" + i);
            return enclosure;
        }).collect(Collectors.toList());
        for (Enclosure enclosure : list)
        {
            System.out.println(enclosure.getName());
        }
德意的啸 2022-09-13 11:55:42

map函数是用来生成新类的。flatMap和map类似,不同的是其每个元素转换得到的是Stream对象,会把子Stream中的元素压缩到父集合中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文