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

天宇小凡
  • 233

有一个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());

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

回复
阅读 6.5k
2 个回答

将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());
        }

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏