Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java属性和lambda集合_Java_Lambda_Java 8 - Fatal编程技术网

Java属性和lambda集合

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

我有一个方法可以用这种方式将属性转换成hashmap(我知道这是错误的)

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);
});