2017-12-29 16 views
1

数字と単語の両方を含むテキストが与えられました。Java Streamからその数字で始まる数字の各桁数を取得する方法は?

どの桁でその数字で始まるテキストの番号を取得するのですか?

ここでJavaストリームを使用します。

私はすべての数字をフィルタリングするための管理:

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

しかし、ここでは厳しい部分が来ます。各桁の数字から始まる数字の数はどのようにして計算されますか?

答えて

3

あなたは可能性がフィルタリング後の初期文字でグループ、および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.

関連する問題