Collectors.toMap生成错误的密钥

时间:2018-01-05 21:08:11

标签: java lambda java-8

我想让查找的键成为最终地图的键。我有一个像这样执行查找的对象<​​/ p>

 dat1=org.sys.basic.DataBaseObject1
 dat2=org.sys.complex.DataComplexObject

这些值保存在Map obj = getLookup();

我使用此贴图构建从上面的地图值加载的对象的最终地图。但是,我希望最终的映射将dat1和dat2键作为键,并将加载的对象作为值,如此;

 dat1=..DataBaseObject1 and
 dat2=....DataComplexObject

这是我的尝试。问题是我的最终映射没有键dat1和dat2,但包含要加载的类的字符串名称,即org.sys.basic.DataBaseObject1。窥视显示dat1和dat2为键,但它们最终不会作为最终映射中的键。

Map<String, String> obj = getLookup();
Map<String, String> m = propertyNames.stream()
                                     .collect(toMap(Function.identity(), obj::getProperty));
Map<String, DataMap> handlers = handlerMap.entrySet()
                                          .stream()
                                          .peek(m -> System.out.println("Key is " + m.getKey() + " and value is "  + m.getValue()))
                                          .collect(toMap(e -> e.getKey(), e -> createDataMap(e.getValue())
                                          .orElse(new NullDataMapper())));

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。正在制作正确的钥匙。但是,Spring Framework Autowired Components通过使用Autowired组件名称覆盖了Map中的键