我希望在List<Object>
中获取一些对象的属性,并使用java8的lambda将它们放入List<Map<String,Object>>
。在Java7中我会以这种方式编写。为了使这个可读我想用Java8的Lambda以另一种方式翻译它。
List<HouseModel> _house = new ArrayList<>();
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map = new HashMap<>(2);
for (HouseModel h : _house) {
map.put("address", h.getAddress());
map.put("number", h.getHouseNum());
list.add(map);
}
答案 0 :(得分:5)
您可以将每个HouseModel
映射到Map<String,String>
,然后收集到List
:
List<Map<String, String>> list =
_house.stream()
.map(h -> {Map<String,String> map = new HashMap<>();
map.put("address", h.getAddress());
map.put("number", h.getHouseNum());
return map;
})
.collect(Collectors.toList());
或者,如果您使用的是Java 9,请不要介意创建的Map
是不可变的:
List<Map<String, String>> list =
_house.stream()
.map(h -> Map.of("address", h.getAddress(),"number", h.getHouseNum()))
.collect(Collectors.toList());