将一个Map添加到列表中。当循环遍历列表时创建该Map。

3
我有一个列表里面有 getSemiFileInfos() 方法,我想用流的方式循环遍历每个元素。每个元素仍然可以使用 getItem()getItem2() 方法。我将首先在 itemMap 中创建 itemitem2 的映射,然后将每次循环得到的 getSemiFileInfos() 方法的结果存储为 map 并添加到 items 列表中。
我希望这段代码能够写成一行。我想知道这是否仍然可能。
private List<Map<String, String>> items;

items = new ArrayList<Map<String, String>>();

Map<String, String> itemMap = new HashMap<String, String>();
file.getFileInfo().getSemiFileInfos().stream().forEach(m-> 
    itemMap.put("item", m.getItem()); 
    itemMap.put("item2", m.getItem2().split(":",1))
);
items.add(mrphMap);
1个回答

1
你可以使用map()Stream的每个元素映射为一个Map,然后将其收集到一个List中:
List<Map<String, String>> items =
    file.getFileInfo()
        .getSemiFileInfos()
        .stream() 
        .map(m-> {
            Map<String, String> itemMap = new HashMap<String, String>();
            itemMap.put("item", m.getItem()); 
            itemMap.put("item2", m.getItem2().split(":",1)); // this doesn't produce a String
                                                             // value so perhaps you are
                                                             // missing some additional logic
                                                             // that would  extract one 
                                                             // String from the String[]
            return itemMap;
        })
        .collect(Collectors.toList());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接