我想使用Java 8流实现以下代码段。任何答案都将是可理解的。我需要为相同的键``数量''设置不同的值,以便在循环中创建新的哈希图。 [{{amount = 100},{amount = 200}] 。
List<String> data = Arrays.asList('', '', '');
List<Map<String,Object> finalList = new ArrayList();
for(String dataIterate : data) {
Map<String,Object> map = new HashMap();
map.put("amount",dataIterate);
finalList.add(map);
}
答案 0 :(得分:2)
您要的是什么
List<Map<String, String>> result = data.stream()
.map(s -> Stream.of(s).collect(Collectors.toMap(s2 -> "amount", Function.identity())))
.collect(Collectors.toList());
获取源中的每个元素,使用给定的常量键和该元素的值创建一个Map
。最后将它们收集到List
答案 1 :(得分:2)
data.stream()
.map(dataIterate -> {
Map<String,Object> map = new HashMap();
map.put("amount", dataIterate);
return map;
})
.collect(Collectors.toList()) // or any other terminal operation you might need
但实际上还不清楚为什么不更简单 SimpleEntry
或Pair
,或者其他任何可以保留键/值而不是带有{单次输入
答案 2 :(得分:0)
您可以按照以下步骤操作,对initialization block
使用Map
:
List<Map<String, String>> map =
data.stream().map(data -> new HashMap<String, String>(){{put("amount", data);}})
.collect(Collectors.toList());
但是要存储相同键的多个值,最好使用Map<String, List<String>>