Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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和streamapi_Java - Fatal编程技术网

Java 如何将此代码转换为使用lambda和streamapi

Java 如何将此代码转换为使用lambda和streamapi,java,Java,在这种情况下,我们如何使用lambda和streamapi Map<String, Integer> map = new LinkedHashMap<>(); BufferedReader br = new BufferedReader(new FileReader(new File(("test.txt")))); String line = ""; String[] words; while((line = br.readLine()) != null){ w

在这种情况下,我们如何使用lambda和streamapi

Map<String, Integer> map = new LinkedHashMap<>();
BufferedReader br = new BufferedReader(new FileReader(new File(("test.txt"))));
String line = ""; String[] words;
while((line = br.readLine()) != null){
    words = line.split(" ");
    for(String word : words){
        if(map.containsKey(word)){
            map.put(word, map.get(word)+1);
        }else{
             map.put(word, 1);
        }
    }
}
System.out.println(map);
Map Map=newlinkedhashmap();
BufferedReader br=新的BufferedReader(新文件读取器(新文件(((“test.txt”)));
字符串行=”;字符串[]个单词;
而((line=br.readLine())!=null){
字=行。拆分(“”);
for(字符串字:单词){
if(地图容器(word)){
map.put(单词,map.get(单词)+1);
}否则{
地图放置(单词1);
}
}
}
系统输出打印项次(map);

您可以参考以下以
bufferedReader.stream()开头的代码,并按照内联注释进行操作:

Map<String, Integer> map = new LinkedHashMap<>();
BufferedReader br = new BufferedReader(new FileReader(new File(("test.txt"))));

br.lines()//get stream from BufferedReader
  .map(line -> line.split(" "))//split lines to array
  .flatMap(stream -> Arrays.stream(stream))//convert array to stream
  .collect(Collectors.toMap( s -> s, s -> 1,Integer::sum ));//collect stream to Map
Map Map=newlinkedhashmap();
BufferedReader br=新的BufferedReader(新文件读取器(新文件(((“test.txt”)));
br.lines()//从BufferedReader获取流
.map(line->line.split(“”)//将行拆分为数组
.flatMap(stream->array.stream(stream))//将数组转换为流
.collect(Collectors.toMap(s->s,s->1,Integer::sum))//收集要映射的流

如果我正确理解了您的代码,您只是在计算文件中单个单词的出现次数。如果这是正确的:

Map<String, Long> wordCount = br.lines()
    .flatMap(l -> Arrays.stream(l.split(" "))
    .collect(groupingBy(w -> w, counting());
Map wordCount=br.lines()
.flatMap(l->Arrays.stream(l.split(“”))
.collect(分组方式(w->w,counting());

到目前为止你尝试了什么?作为旁注:这不是一个编码服务或教学平台——它是一个问答网站。也可能是抱歉托马斯的复制品,我刚刚开始学习lambda和streams,所以我提出了这个问题……谢谢……好吧,我认为学习东西的最好方法是阅读它,然后尝试我首先是你自己。这样你就可以将代码应该做什么的知识(你应该知道这是你的代码)和可用api在问题上的应用结合起来。尝试
.collect(collector.toMap(s->s,s->1,Integer::sum))
平面图(…)
之后查看更多的lambda和流:)很好,谢谢