자바 기초 - 어떤 글 에서 단어 가 나 오 는 횟수 를 통계 합 니 다.

3553 단어
자바 기초 - 어떤 글 에서 단어 가 나 오 는 횟수 를 통계 합 니 다.
대상 txt 파일 찾기,
문자 입력 스 트림 대상 을 만 들 고 버퍼 스 트림 을 만 듭 니 다.
줄 마다 문 자 를 순서대로 읽 고,
전체 문장 문자 에 추가,
정규 표현 식 (하나 이상 의 비 단어 문자) 으로 구분 하여 독립 된 단 어 를 얻 습 니 다.
문자열 배열 을 옮 겨 다 니 며,
단 어 를 맵 (중복 되 지 않 아 도 됨) 의 키 로 하고 나타 나 는 횟수 를 맵 의 값 으로 합 니 다.
맵 에 이 단 어 를 포함 하지 않 으 면 value 는 1 이 고 그렇지 않 으 면 value + 1 입 니 다.통 하 다.
맵 을 set 집합 출력 키 - > 맵. get (key) 로 변환 합 니 다.
1. 도구 클래스 만 들 기 (파일 읽 기, 입력 흐름 만 들 기, 글 읽 기 등 포함)
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class CountWordsUtil {

    //      ,         ,
    public static Reader findFile(){
        File f=new File("E:/xn/The Old Man and the Sea .txt");
        Reader in=null;
        try{
            in=new FileReader(f);
        }catch(IOException e){
            e.printStackTrace();
        }
        return in;
    }
    //   
    public static BufferedReader inputPipe(Reader in){
        BufferedReader br=null;
        br=new BufferedReader(in);
        return br;
    }
    //      
    public static String readAll(BufferedReader br,Reader in){
        String str;
        Map map=new HashMap<>();
        StringBuilder words=null;
        String allwords=null;
        try {
            StringBuilder sb = new StringBuilder();
            while ((str = br.readLine()) != null) {

                words = sb.append(str);
                allwords=sb.toString();
            }
            br.close();
            in.close();
            }catch(IOException e){
                e.printStackTrace();
            }

            return allwords;
    }
    //           ,    map    ,   
    public static void spiltAndCount(String allwords, Map map) {
        String regex = "\\W+";/*/[\s]|[ ]|[,]|[.]|[“”]|[?]|[  ]*/
        String[] words = allwords.split(regex);
        for (int i = 0; i < words.length; i++) {
            if (map.containsKey(words[i])) {
                map.put(words[i], map.get(words[i])+1);
            } else {
                map.put(words[i], 1);
            }
        }
        Set keys = map.keySet();

        for (String key : keys) {
            System.out.println(key + "---->" + map.get(key));
        }
    }

}

2. 주 클래스 테스트 (파일 읽 기)
import java.io.BufferedReader;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;

public class ReadFile {
    public static void main(String[] args) {
        long  star =System.currentTimeMillis();

        Map map=new HashMap<>();
        Reader in= CountWordsUtil.findFile();
        BufferedReader br=CountWordsUtil.inputPipe(in);
        String allwords= CountWordsUtil.readAll(br,in);
        CountWordsUtil.spiltAndCount(allwords, map);
        long  end=System.currentTimeMillis();

        System.out.println("     :"+(end-star));
    }
}

3. 파일 쓰기
import java.io.*;

public class WriterFile {
    public static void main(String[] args){
        File f=new File("E:output.txt");
        try{
            Writer out=new FileWriter(f);

            Reader in= CountWordsUtil.findFile();
            BufferedReader br=CountWordsUtil.inputPipe(in);
            String allwords= CountWordsUtil.readAll(br,in);
            out.write(allwords,0,allwords.length());
            out.close();

        }catch(IOException e){
            e.printStackTrace();
        }
    }
}

좋은 웹페이지 즐겨찾기