如何用Stream将List<Map<String, Comparable<?>>>转为List<Map<String, Object>>
解决方案
你可以通过Stream的map操作逐个转换每个Map<String, Comparable<?>>为Map<String, Object>,再收集成目标List。因为Comparable<?>是Object的子类,向上转型是安全的,不需要显式强制转换。
完整代码如下:
public List<Map<String, Object>> myMethod() { List<Map<String, Comparable<?>>> result = anotherMethod(); return result.stream() .map(map -> { Map<String, Object> convertedMap = new HashMap<>(map); return convertedMap; }) .collect(Collectors.toList()); }
替代写法(基于流式收集)
如果偏好纯流式操作,也可以通过遍历原Map的entry集合来收集新Map:
public List<Map<String, Object>> myMethod() { List<Map<String, Comparable<?>>> result = anotherMethod(); return result.stream() .map(map -> map.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) .collect(Collectors.toList()); }
说明
两种写法的核心逻辑一致:利用Comparable<?>到Object的自动向上转型,将原Map的元素完整拷贝到新的Map<String, Object>实例中,最终通过Collectors.toList()收集成目标List。
内容的提问来源于stack exchange,提问作者Blip Bloop
相关产品推荐
相关产品推荐

