简体   繁体   English

Java 8:转换EnumMap <ExampleEnum, String> 到地图 <String, Object>

[英]Java 8: Transform EnumMap<ExampleEnum, String> to Map<String, Object>

I have a situation where I need to copy my EnumMap<ExampleEnum,String> to Map<String, Object> . 我遇到需要将EnumMap<ExampleEnum,String>复制到Map<String, Object> Many examples on Stack Overflow shows how to cast from one data type to another but not from enum. 关于Stack Overflow的许多示例说明了如何从一种数据类型转换为另一种数据类型,而不是从枚举类型转换。 I have tried doing it through stream but no luck. 我尝试通过流来做到这一点,但没有运气。 Here is my code 这是我的代码

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>();

Now I want to do something like 现在我想做类似的事情

newMap.putAll(map);

How can I do it through Stream APIs? 如何通过Stream API做到这一点?

Map<String, Object> newMap = map.entrySet().stream()
        .collect(Collectors.toMap(e -> e.getKey().toString(),  Map.Entry::getValue));

A more concise answer is, 一个更简洁的答案是,

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));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM