鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ java8 stream的flatMap如何返回一個新的類?

java8 stream的flatMap如何返回一個新的類?

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

要把這個fileNames,轉(zhuǎn)成Enclosure類的List,通過stream操作。

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

我現(xiàn)在的代碼

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

有語法錯誤,不知道應(yīng)該如何寫。求教。

回答
編輯回答
挽歌

map函數(shù)是用來生成新類的。flatMap和map類似,不同的是其每個元素轉(zhuǎn)換得到的是Stream對象,會把子Stream中的元素壓縮到父集合中。

2017年5月10日 01:52
編輯回答
淺時光

將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()));參數(shù)錯誤
            enclosure.setPath("testurl" + i);
            return enclosure;
        }).collect(Collectors.toList());
        for (Enclosure enclosure : list)
        {
            System.out.println(enclosure.getName());
        }
2017年5月25日 05:41