我有一种方法以这种方式将属性转换为hashmap(我知道它错了)
Map<String, String> mapProp = new HashMap<String, String>();
Properties prop = new Properties();
prop.load(new FileInputStream( path ));
prop.forEach( (key, value) -> {mapProp.put( (String)key, (String)value );} );
return mapProp;
我的想法是以这样的方式进行映射:
Properties prop = new Properties();
prop.load(new FileInputStream( path ));
Map<String, String> mapProp = prop.entrySet().stream().collect( /*I don't know*/ );
return mapProp;
如何写一个lambda表达式来做那个?
提前全部谢谢
安德烈。
答案 0 :(得分:14)
Properties prop = new Properties();
prop.load(new FileInputStream( path ));
Map<String, String> mapProp = prop.entrySet().stream().collect(
Collectors.toMap(
e -> (String) e.getKey(),
e -> (String) e.getValue()
));
答案 1 :(得分:5)
实际上并不是一个答案,但对于路过的其他人来说可能是有用的。
由于Properties
扩展Hashtable<Object,Object>
实施Map<K,V>
,您不需要做任何其他事情:
Properties p = new Properties();
Map<String,String> m = new HashMap(p);
不太确定为什么没有为此代码提供警告,因为它暗示从Map<Object,Object>
到Map<String,String>
的演员阵容是可以接受的,但我怀疑这是一个单独的问题。
答案 2 :(得分:0)
对于那些想要使用forEach
的人HashMap<String, String> propMap = new HashMap<>();
prop.forEach((key, value)-> {
propMap.put( (String)key, (String)value);
});