DBILITY

java file stream word count max value 본문

java/basic

java file stream word count max value

DBILITY 2018. 6. 4. 21:13
반응형

저장된 파일의 내용을 읽어 공백문자를 기준으로 자른 후, 빈도수가 가장 큰 단어를 출력하도록 해 보았다.

2년전에 mapreduce wordcount를 만들어 본게 많은 도움이 된다.

신문기사 링크 http://v.media.daum.net/v/20180604182613539?rcmd=rn


발췌한 내용은 아래와 같다.

염증 예방을 돕는 식품은?

우선 항산화 효과와 항암 효과가 탁월해 세계 10대 슈퍼푸드로 선정된 식품 중 귀리, 블루베리, 녹차, 마늘, 토마토, 브로콜리, 아몬드, 시금치 등은 항염 효과 역시 상당한 것으로 알려진다.
귀리의 불포화지방산과 베타글루칸, 블루베리의 안토시아닌과 로돕신, 녹차의 카테킨, 마늘의 알리신, 토마토의 라이코펜과 루틴, 브로콜리의 비타민 C와 설포라판, 아몬드의 비타민 E와 셀레늄, 
시금치의 베타카로틴과 미네랄 등은 체내 혈관에서 염증을 유발하는 LDL콜레스테롤 수치를 낮추거나 활성산소를 비롯한 각종 유해 성분 제거를 도와 항염 기능을 강화한다. 
이처럼 잘 알려진 슈퍼푸드 이외에도 항염 효과를 지닌 식품이 있을까?


Test07.java

 
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class Test07 {
 
    public static void main(String[] args) throws IOException {
 
        Stream<String> stream = Files.lines(Paths.get(System.getProperty("user.home")+"\\Desktop\\신문기사.txt"),StandardCharsets.UTF_8);
 
        Map<String,Long> map =  stream.flatMap(s->Arrays.stream(s.split(" ")))
            .map(s->s.replace(" ", "").trim())
            .sorted((x,y)-> x.compareTo(y) >= 1 ? 1 : x.compareTo(y) <= -1 ? 1 : 0) // 사전순으로 정렬
            .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
 
        //map.forEach((k,v)->System.out.println(k+":"+v));
        stream.close();
 
        Optional<Entry<String, Long>> entry =  map.entrySet().stream()
            .sorted((x,y)->x.getValue() > y.getValue() ? -1 : x.getValue() < y.getValue() ? 1 : 0) // 사전순의 역순으로 정렬
            .findFirst();
            //.forEach(System.out::println);
        System.out.println(entry.get().getKey() + ":"+ entry.get().getValue());
    }
}

결과

항염:3
반응형

'java > basic' 카테고리의 다른 글

oracle java jdk free(?) version info (무료 버전 번호)  (0) 2021.05.15
javafx webpage loading  (0) 2021.04.16
generic type의 사용 이유  (0) 2018.05.28
java lambda stream 실습  (0) 2018.05.27
java lambda map,reduce,filter summary  (0) 2018.05.25
Comments