【问题标题】:How to get for each digit number of numbers that start with that digit from Java Stream?如何从Java Stream中获取以该数字开头的每个数字的数字?
【发布时间】:2018-06-09 14:03:51
【问题描述】:

我收到一个包含数字和单词的文本。

如何为每个数字获取文本中以该数字开头的数字的数量?

我想在这里使用 Java Streams。

我设法过滤了所有数字:

Files.lines(Paths.get("/path/to/file/text.txt"))
     .filter(Pattern.compile("\\d+").asPredicate())

但困难的部分来了。如何计算每个数字以它开头的数字个数?

【问题讨论】:

    标签: java text java-stream text-processing


    【解决方案1】:

    过滤后可以按首字母分组,将数据放入Map<Character,Integer>

    Map<Character,Integer> digCount = Files
        .lines(Paths.get("/path/to/file/text.txt"))
        .filter(Pattern.compile("\\d+").asPredicate())
        .collect(Collectors.groupingBy(s -> s.charAt(0), Collectors.summingInt(s->1)));
    for (Map.Entry<Character,Integer> e : digCount.entrySet()) {
        System.out.println(e.getKey()+" "+e.getValue());
    }
    

    Demo.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2022-08-17
      • 2021-08-07
      • 2017-02-13
      • 2013-05-29
      • 2019-03-08
      相关资源
      最近更新 更多