资讯专栏INFORMATION COLUMN

java8-模拟hadoop

roundstones / 697人阅读

摘要:的入门程序,也能实现统计单词数量程序特殊文件需要格式转换为将多个流融合为一个统计单词数量程序通过自定义统计,其实也使用的是记住凡是

hadoop的入门程序,java8也能实现

txt统计单词数量程序

@Test
public void fileWordCount() throws IOException {
    //特殊文件需要格式转换为txt
    Files.readAllLines(Paths.get("D:jd.txt"), StandardCharsets.UTF_8).parallelStream()
            //将多个流融合为一个
            .flatMap(line -> Arrays.stream(line.trim().split("s")))
            .filter(word -> word.length() > 0)
            .map(word -> new AbstractMap.SimpleEntry<>(word, 1))
            .collect(groupingBy(AbstractMap.SimpleEntry :: getKey, counting()))
            .entrySet().forEach(System.out :: println);
}

List统计单词数量程序

@Test
public void listWordCount(){
    List stringList = Arrays.asList("a","b","c","a");
    stringList.stream()
            .map(s -> new AbstractMap.SimpleEntry<>(s, 1))
            .collect(groupingBy(AbstractMap.SimpleEntry :: getKey, counting()))
            .entrySet().stream()
            .forEach(System.out :: println);
    System.out.println("---------------------------------------------------");
    //通过自定义reduce统计,其实counting()也使用的是reduce
    //记住:凡是在中间操作使用了map,接口定义都需要声明出来,直接使用lambda表达式会有1.无法读取method,2.类型检查不到 的问题
    BinaryOperator binaryOperator2 = Integer::sum;
    //排序的转换规则接口
    ToIntFunction sortMapFunction = (Map.Entry se) -> Integer.valueOf(se.getValue().toString()).intValue();
    stringList
            .stream()
            .map(s -> new AbstractMap.SimpleEntry<>(s, 1))
            .collect(groupingBy(AbstractMap.SimpleEntry::getKey,
                    reducing(0, AbstractMap.SimpleEntry::getValue,binaryOperator2)))
            .entrySet()
            .stream()
            .sorted(Comparator.comparingInt(sortMapFunction))
            .forEach(System.out::println);
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68143.html

相关文章

  • 到处是map、flatMap,啥意思?

    摘要:中使用那一套,线程的速度,你知道的而对于分布式数据流来说,本来就是并行的,这种参数意义就不大了。函数种类一般作用在数据流上的函数,会分为两类。中的程序是实现在数据流上的。可以看作是的更新日志,数据流中的每一个记录对应数据库中的每一次更新。最近入职一个有趣的年轻同事,提交了大量大量的代码。翻开git记录一看,原来是用了非常多的java8的语法特性,重构了代码。用的最多的,就是map、flatM...

    番茄西红柿 评论0 收藏0
  • 到处是map、flatMap,啥意思?

    摘要:中使用那一套,线程的速度,你知道的而对于分布式数据流来说,本来就是并行的,这种参数意义就不大了。函数种类一般作用在数据流上的函数,会分为两类。中的程序是实现在数据流上的。可以看作是的更新日志,数据流中的每一个记录对应数据库中的每一次更新。最近入职一个有趣的年轻同事,提交了大量大量的代码。翻开git记录一看,原来是用了非常多的java8的语法特性,重构了代码。用的最多的,就是map、flatM...

    番茄西红柿 评论0 收藏0
  • 到处是map、flatMap,啥意思?

    摘要:中使用那一套,线程的速度,你知道的而对于分布式数据流来说,本来就是并行的,这种参数意义就不大了。函数种类一般作用在数据流上的函数,会分为两类。中的程序是实现在数据流上的。可以看作是的更新日志,数据流中的每一个记录对应数据库中的每一次更新。最近入职一个有趣的年轻同事,提交了大量大量的代码。翻开git记录一看,原来是用了非常多的java8的语法特性,重构了代码。用的最多的,就是map、flatM...

    xuxueli 评论0 收藏0
  • Java8-9-Stream介绍与操作方式详解

    摘要:中的与表达式可以说是相伴相生的,通过我们可以更好的更为流畅更为语义化的操作集合。流是一种惰性操作,所有对源数据的计算只在终止操作被初始化的时候才会执行。然后传入表达式将每个元素转换大写,通过方法将结果收集到中。 上一篇系统学了方法引用的几种类型及应用场景,本篇开始我们正式学习Stream。Java8中的Stream与lambda表达式可以说是相伴相生的,通过Stream我们可以更好的更...

    时飞 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<