Java 如何将此代码转换为使用lambda和streamapi
在这种情况下,我们如何使用lambda和streamapiJava 如何将此代码转换为使用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
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和流:)很好,谢谢