2

我有一种情况需要将我的复制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 来做到这一点?

4

2 回答 2

2
Map<String, Object> newMap = map.entrySet().stream()
        .collect(Collectors.toMap(e -> e.getKey().toString(),  Map.Entry::getValue));
于 2018-06-26T14:39:04.913 回答
2

一个更简洁的答案是,

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));
于 2018-06-26T14:41:01.533 回答