我遇到一种情况,需要将EnumMap<ExampleEnum,String>
复制到Map<String, Object>
。关于Stack Overflow的许多示例说明了如何从一种数据类型转换为另一种数据类型,而不是从枚举类型转换。我尝试通过流来做到这一点,但没有运气。这是我的代码
private enum Number{
One, Two, Three;
}
final Map<Number, String> map = Collections.synchronizedMap(new EnumMap<Number, String> (Number.class));
populateMap(map);
Map<String, Object> newMap= new HashMap<String, Object>();
现在我想做
newMap.putAll(map);
如何通过Stream API做到这一点?
答案 0 :(得分:2)
Map<String, Object> newMap = map.entrySet().stream()
.collect(Collectors.toMap(e -> e.getKey().toString(), Map.Entry::getValue));
答案 1 :(得分:1)
一个更简洁的答案是
final Map<Number, String> map = Collections.synchronizedMap(new EnumMap<>(Number.class));
Map<String, Object> newMap= new HashMap<>();
map.forEach((key, value) -> newMap.put(key.name(), value));