Java:将遗留类型Dictionary的实例转换为Map

obe*_*ies 5 java collections

我正在调用一个库,出于API兼容性原因,它会返回一个类型的实例java.util.Dictionary,但我希望实现一个实例java.util.Map.

如何轻松地将java.util.Dictionary实例转换为java.util.Map实例?

Mic*_*son 7

使用Guava和Java 8:

Iterator<String> keysIter = Iterators.forEnumeration(dict.keys());
Map<String, Object> dictCopy = Maps.toMap(keysIter, dict::get);
Run Code Online (Sandbox Code Playgroud)

纯Java 8的替代方案:

List<String> keys = Collections.list(dict.keys());
Map<String, Object> dictCopy = keys.stream()
           .collect(Collectors.toMap(Function.identity(), dict::get)); 
Run Code Online (Sandbox Code Playgroud)