Java 8: преобразование EnumMap <ExampleEnum, String> в сопоставление <String, Object> - PullRequest
0 голосов
/ 26 июня 2018

У меня есть ситуация, когда мне нужно скопировать мой EnumMap<ExampleEnum,String> в Map<String, Object>. Во многих примерах переполнения стека показано, как преобразовывать данные из одного типа в другой, но не из enum. Я пытался сделать это через поток, но не повезло. Вот мой код

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 APIs?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Более краткий ответ:

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));
0 голосов
/ 26 июня 2018
Map<String, Object> newMap = map.entrySet().stream()
        .collect(Collectors.toMap(e -> e.getKey().toString(),  Map.Entry::getValue));
...