题目背景

很多了解过大数据编程的基础的人都知道一个入门级程序:word count。

其计算思路是,将一串文本(一般都是英文文章),在java中表现出来就是一个字符串或者是一个文本(txt文件)。

该题是计算该字符串中相同单词的个数并打印出来。

java8解决方案

package org.feng.stream;import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** Created by Feng on 2019/10/4 14:58* CurrentProject's name is java8*/
public class WordCountDemo {public static void main(String[] args) {// 文件生成流// 遍历每一个单词出现的次数(简单的使用空格切割)// 读取txt文件;设置编码格式try(Stream<String> lines = Files.lines(Paths.get("resources/hello.txt"), Charset.defaultCharset())){// 将英文逗号、句号、感叹号全部替换为空格字符串lines.map(str -> str.replaceAll("[,]|[.]|[!]"," "))// 按照空格切割字符串.flatMap(line -> Arrays.stream(line.split(" ")))// 过滤掉包含的空字符串.filter(str -> !"".equals(str))// 使用String的toString方法,获取单词作为map的键;计算个数作为值.collect(Collectors.groupingBy(String::toString, Collectors.counting()))// 遍历Map<String, Integer>.forEach((k,v)->{System.out.println("k="+k+",v="+v);});} catch (IOException e) {e.printStackTrace();}}
}

测试文档txt

Hello everyone!
my name is feng jin song. I am come from xi'an, i like play pingpong and computer games.
Three month ago,i was leave my university life.
when i walked on the street, i always want see anyone who named xxx.
i also like java.

控制台输出

k=play,v=1
k=named,v=1
k=university,v=1
k=ago,v=1
k=xi'an,v=1
k=I,v=1
k=when,v=1
k=life,v=1
k=jin,v=1
k=see,v=1
k=computer,v=1
k=java,v=1
k=Hello,v=1
k=street,v=1
k=leave,v=1
k=and,v=1
k=feng,v=1
k=games,v=1
k=from,v=1
k=on,v=1
k=always,v=1
k=song,v=1
k=like,v=2
k=everyone,v=1
k=want,v=1
k=was,v=1
k=i,v=5
k=also,v=1
k=come,v=1
k=is,v=1
k=am,v=1
k=my,v=2
k=pingpong,v=1
k=Three,v=1
k=the,v=1
k=walked,v=1
k=month,v=1
k=anyone,v=1
k=name,v=1
k=xxx,v=1
k=who,v=1Process finished with exit code 0

总结

这个程序而言,使用的是java8中的Stream接口和Collectors工具接口。他们的组合是很强大的。值得我们去学习。

java8写一个word count相关推荐

  1. 用python来构建一个word文档-写文章

    直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,在过程上有一点繁琐,一下子看不懂的小伙伴可以把它拆分成几个部 ...

  2. 写一个可以一键统一调整word文档格式的程序

    要写一个可以一键统一调整 Word 文档格式的程序,可以使用 Microsoft Office Word 的 VBA 功能来实现. 步骤如下: 打开 Word 文档,在菜单栏中点击"开发人员 ...

  3. Java8之写一个装逼的函数式代码

    Java8之将普通方法写一个装逼的函数式代码 首先看代码 下面的方法很简单就是从数据中找一个值,找到返回. @Testpublic void test2() {Integer [] c = new I ...

  4. 媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来^-^

    之前我媳妇儿让我给她找一个PDF转WORD的免费工具,在网上找了半天发现要不就是收费,要不就是转化的格式混乱.既然网上不能找到好用的免费工具那就直接来写一个吧.人生苦短,我用python. 万能的py ...

  5. 用servlet写一个hello word

    哈喽,你好呀.今天要分享的是如何通过servlet在网页上去写一个hello world,还记得我们计算机入门的第一个程序吗,步骤非常简单.但是今天写的这个hello world步骤就有点多啦,但是熟 ...

  6. word关闭未响应_写了两小时的文档没保存?!一个word小技巧来拯救

    不知道大家有没有遇到过这样的情况: 写了好久的word文档没来的及保存突然崩溃了 刚保存好的文档不小心被删除.被覆盖 老Y相信不管是哪种情况,一旦遇上想死的心都有了. 其实word中有一个小技巧,可以 ...

  7. word中添加java代码怎么写_Java如何在word文档中写一个段落?

    在Java编程中,如何在word文档中写一个段落? 注意:需要访问网址:http://poi.apache.org/download.html , 下载一个Apache POI软件包.这里下载最新版本 ...

  8. Word Count作业

    Word Count作业 一.个人Gitee地址:https://gitee.com/Changyu-Guo 二.项目简介 该项目主要是模拟Linux上面的wc命令,基本要求如下: 命令格式: wc. ...

  9. 用 python+tkinter+有道云API 写一个自用的背单词软件

    目录 导语 程序功能 需要用的工具 需要安装的python包 程序代码 功能类函数Functions 键盘响应 窗体设置 Sql连接 Gui程序打包 结语 参考文献 导语 最近在学英语,新单词需要反复 ...

最新文章

  1. Python之机器学习K-means算法实现
  2. 网站采用自建服务器的优点,企业自建网页的方法是怎样的,自建网站有哪些优点呢?...
  3. 路飞学城-python爬虫密训-第三章
  4. 许昌:让便捷支付成为智慧城市新名片
  5. azure云数据库_Microsoft Azure SQL数据库-分步创建教程
  6. RT-Thread Studio开发GD32VF103
  7. html一行文字布局,HTML页面文字布局与文字效果
  8. 三维实景建模技术在智慧交通领域的新发展与深入应用
  9. 教学小结:我这样帮助学生提出疑问
  10. C++ 高仿easyX图形库
  11. npm 报错 426 Upgrade Required
  12. O3DF执行董事Royal O’Brien:开源没有边界,所有共享的声音都会变成实际方向
  13. 正则表达式 基本汉字 特殊字符
  14. windows防火墙设置_详解关闭Windows防火墙操作技巧,让你彻底断开与外网的连接...
  15. k8s 证书过期解决
  16. 【数据分析与挖掘】天猫超市复购预测实战(含代码和数据集)
  17. JAVA毕设项目沙县小吃点餐系统(java+VUE+Mybatis+Maven+Mysql)
  18. 中国的IT培训班,到底有多赚钱?
  19. 手游SDK是什么意思,可以解决哪些问题?
  20. 【Unity】相机视锥体剔除算法

热门文章

  1. Goolge Colab免费GPU服务器使用教程
  2. 单片机加减法计算器_单片机加法计算器程序
  3. 赠书丨如何高效学习计算机视觉?
  4. sht20 python_SHT20 IIC 寄存器概述
  5. SHT30 温湿度传感器 使用示例
  6. 人类和海洋动物的相似之处
  7. 基于spring mvc+bootstrap 集成的返利平台 新增内容-自动对接京东数据
  8. 易基因|手把手教你做全基因组DNA甲基化测序分析
  9. USB总线转串口芯片:沁恒CH340
  10. 响应式网页设计之JavaScript基础