2017-12-29 51 views
1

숫자와 단어가 모두 포함 된 텍스트가 표시됩니다.Java Stream에서 해당 숫자로 시작하는 숫자의 각 자릿수를 얻는 방법은 무엇입니까?

각 숫자에 해당 숫자로 시작하는 텍스트의 숫자를 얻으려면 어떻게해야합니까?

자바 스트림을 사용하고 싶습니다.

나는 모든 숫자 필터링 관리 :

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.