Java属性和lambda集合
我有一个方法可以用这种方式将属性转换成hashmap(我知道这是错误的)Java属性和lambda集合,java,lambda,java-8,Java,Lambda,Java 8,我有一个方法可以用这种方式将属性转换成hashmap(我知道这是错误的) Map-mapProp=new HashMap(); Properties prop=新属性(); prop.load(新文件输入流(路径)); prop.forEach((键,值)->{mapProp.put((字符串)键,(字符串)值);}); 返回mapProp; 我的想法是以如下方式进行映射: Properties prop = new Properties(); prop.load(new FileInputS
Map-mapProp=new HashMap();
Properties prop=新属性();
prop.load(新文件输入流(路径));
prop.forEach((键,值)->{mapProp.put((字符串)键,(字符串)值);});
返回mapProp;
我的想法是以如下方式进行映射:
Properties prop = new Properties();
prop.load(new FileInputStream( path ));
Map<String, String> mapProp = prop.entrySet().stream().collect( /*I don't know*/ );
return mapProp;
Properties prop=新属性();
prop.load(新文件输入流(路径));
Map mapProp=prop.entrySet().stream().collect(/*我不知道*/);
返回mapProp;
如何为它编写lambda表达式
提前谢谢大家
安德里亚。使用
Properties prop=新属性();
prop.load(新文件输入流(路径));
Map mapProp=prop.entrySet().stream().collect(
汤姆(
e->(字符串)e.getKey(),
e->(字符串)e.getValue()
));
实际上不是答案,但对路过的其他人来说,知道答案可能很有用
由于Properties
扩展了实现Map
的Hashtable
,因此不需要执行以下操作:
Properties p = new Properties();
Map<String,String> m = new HashMap(p);
Properties p=新属性();
Map m=新的HashMap(p);
不太清楚为什么没有为该代码提供警告,因为这意味着可以接受从
Map
到Map
的转换,但我怀疑这是一个单独的问题。对于那些想要使用forEach的人来说
HashMap<String, String> propMap = new HashMap<>();
prop.forEach((key, value)-> {
propMap.put( (String)key, (String)value);
});
HashMap propMap=newhashmap();
道具forEach((键、值)->{
put((字符串)键,(字符串)值);
});
太简单了。。。我试过这样做:Collectors.toMap(e->(String)e.getKey(),(String)e.getValue()),但当然不行。。。非常非常感谢,我有最后一个问题,你有lambda表达式的指南吗?@Andreactania我从javadoc和Oracle的教程开始:这篇文章也非常有用:构造函数和lambda之间的有效方式是什么?@Andreactania-如果可以,我会说让系统来做,在证明优化是必要的之前,永远不要进行优化,因此请使用构造函数;这就是为什么您的代码只产生警告而不是错误,至少在Eclipse中是这样:“类型为HashMap
的表达式需要未经检查的转换才能符合Map
”,所以最好的解决方案是使用HashMap(p)?
HashMap<String, String> propMap = new HashMap<>();
prop.forEach((key, value)-> {
propMap.put( (String)key, (String)value);
});