728x90
작업 전, 정리하기
- 자바에서 2021_인구관련연간자료_20221006_45659.csv파일을 읽는다.
- 읽은 파일의 내용 중 전출, 전입 코드 분석하여 split을 한 뒤 Class에 저장한다.
- 생산자에 대입된 Class의 정보를 txt파일로 저장한다.
- 저장된 txt파일을 읽은 뒤 차트 양식에 맞춰서 데이터를 수정한다.
- 수정된 데이터에 원하는 정보 값(지역별 인구 이동 결과)을 얻기 위한 가공을 시작한다.
- 가공된 정보를 차트 양식에 맞춰 txt파일로 추출한다.
- 추출한 값을 차트 양식에 대입한다.
1. Class파일 생성
1. Population.java (Class)
전입과 전출에 대한 정보를 int값으로 받는 필드를 갖고 있습니다.
public class PopulationMove {
private int toSido; // 전입
private int fromSido; // 전출
public PopulationMove(int toSido, int fromSido) {
this.toSido = toSido;
this.fromSido = fromSido;
}
public int getToSido() {
return toSido;
}
public int getFromSido() {
return fromSido;
}
}
2. PopulationStatistics.java (Main)
1) Main
public class PopulationStatistics {
public static void main(String[] args) throws IOException {
String fileAddress = "P:\\TechIt\\교재\\week3\\2021_인구관련연간자료_20221006_45659.csv";
PopulationStatistics ps = new PopulationStatistics();
List<PopulationMove> pml = ps.readByLine(fileAddress);
}
}
- 파일 경로를 String 변수에 저장합니다.
- PopulationStatistics의 메소드를 사용하기 위해 객체를 생성합니다.
- PopulationMove 자료형을 가진 List pml에 메소드 readByLine을 사용하여 PopulationMove형식의 데이터를 리스트에 저장합니다.
2) readByLine
// 파일을 읽어와서 한 줄씩 읽기
public List<PopulationMove> readByLine(String filename) {
List<PopulationMove> pml = new ArrayList<>();
try {
BufferedReader br = Files.newBufferedReader(Paths.get(filename), StandardCharsets.UTF_8);
String str;
while ((str = br.readLine()) != null) {
PopulationMove pm = parse(str);
System.out.println(pm.getToSido() + "," + pm.getFromSido());
pml.add(pm);
}
} catch (IOException e) {
e.printStackTrace();
}
return pml;
}
- PopulationMove 자료형을 가진 List pml을 ArrayList로 생성하였습니다.
- BufferedReader를 사용할 때 IOException 예외처리를 해줘야 하기 때문에 try-catch문을 사용하였습니다.
- BufferedReaer를 Files.newBufferedReader를 사용하여 선언하고, filename과 인코딩을 설정해주었습니다.
- 이제 BufferedReader가 filename에 적혀있는 파일을 읽어옵니다.
- 파일로부터 읽어온 값을 저장하기 위한 String변수 str을 생성했습니다.
- while 반복문을 사용하였습니다. 조건은 str에 readLine()으로 한 줄을 불러오고, 불러온 값이 null이 아니면 계속 반복하는 조건입니다.
- str에 저장된 파일의 정보를 parse 메소드를 사용하여 PopulationMove 자료형 변수에 저장하였습니다.
- parse메소드가 잘 실행되었는지, PopulationMove가 잘 생성되었는지 확인하기 위한 print 메소드입니다.
- 잘 생성된 PopulationMove pm을 어레이 리스트 pml에 추가합니다.
2-1) parse
readByLine 메소드 안에서 진행하고 있는 parse 메소드에 대한 설명입니다.
public PopulationMove parse(String data) {
String str[] = data.split(",");
int toSido = Integer.parseInt(str[0]);
int fromSido = Integer.parseInt(str[6]);
PopulationMove pm = new PopulationMove(fromSido, toSido);
return pm;
}
- readByLine으로 읽어온 문서의 한 줄 str을 받아와서 콤마(", ")를 기준으로 분할합니다.
- 분할한 데이터를 캐스팅하여 각 변수에 대입합니다.
- 생성자에 변수를 대입하여 객체를 생성합니다.
- 만들어진 객체 pm을 리턴합니다.
반응형
'회고록 > Archive' 카테고리의 다른 글
[Java] 대용량 데이터 분석 - 3 (0) | 2022.10.11 |
---|---|
[Java] 대용량 데이터 분석 - 2 (0) | 2022.10.10 |
[Java] 대용량 데이터 분석 - 0 (0) | 2022.10.10 |
[멋쟁이사자처럼 백앤드 스쿨 2기] 01. 2차 과제 그리고 최종 합격 (4) | 2022.09.15 |
[멋쟁이사자처럼 백앤드 스쿨 2기] 00. 지원. (서류 전형 결과) (0) | 2022.09.14 |