자바 기초 - 어떤 글 에서 단어 가 나 오 는 횟수 를 통계 합 니 다.
대상 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();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.