如何从 Java 流中获取以该数字开头的每个数字的数字?

How to get for each digit number of numbers that start with that digit from Java Stream?

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

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

我想在这里使用 Java 流。

我成功过滤了所有数字:

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

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

过滤后可以按首字母分组,将数据放入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.