[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 필터링하는 방법은?

OpenCSV는 Java에서 CSV(Comma Separated Values) 파일을 읽고 쓰기 위한 라이브러리입니다. 이를 사용하여 CSV 파일의 데이터를 원하는 기준에 따라 필터링하는 방법을 알아보겠습니다.

  1. OpenCSV 라이브러리 추가하기 먼저 OpenCSV를 사용하기 위해 프로젝트에 OpenCSV 라이브러리를 추가해야합니다. Maven이나 Gradle 등의 의존성 관리 도구를 사용하는 경우, 해당 도구를 통해 OpenCSV를 가져올 수 있습니다. 또는 OpenCSV의 JAR 파일을 다운로드하여 프로젝트의 라이브러리 폴더에 직접 추가할 수도 있습니다.

  2. CSV 파일 읽기 먼저 CSV 파일을 읽어오기 위해 CSVReader 클래스를 사용합니다. 아래는 파일 경로를 입력받아 CSV 파일을 읽고 List<String[]> 형태로 반환하는 메소드입니다.

import com.opencsv.CSVReader;

public List<String[]> readCSV(String filePath) throws IOException {
    List<String[]> records = new ArrayList<>();
    
    try (CSVReader csvReader = new CSVReader(new FileReader(filePath))) {
        String[] record;
        while ((record = csvReader.readNext()) != null) {
            records.add(record);
        }
    }
    
    return records;
}
  1. 데이터 필터링 CSV 파일에서 필터링할 데이터를 원하는 기준에 따라 선택합니다. 예를 들어, “age” 열이 30보다 큰 데이터만 필터링한다고 가정해봅시다. 아래는 데이터 필터링을 수행하는 메소드입니다.
public List<String[]> filterData(List<String[]> records, int columnIdx, int filterValue) {
    List<String[]> filteredRecords = new ArrayList<>();
    
    for (String[] record : records) {
        int age = Integer.parseInt(record[columnIdx]);
        
        if (age > filterValue) {
            filteredRecords.add(record);
        }
    }
    
    return filteredRecords;
}
  1. 필터링된 데이터 출력하기 마지막으로, 필터링된 데이터를 출력해보는 예제입니다.
public void printFilteredData(List<String[]> filteredRecords) {
    for (String[] record : filteredRecords) {
        for (String field : record) {
            System.out.print(field + " ");
        }
        System.out.println();
    }
}

위의 예제 코드에서 columnIdx는 데이터를 필터링할 열의 인덱스를 의미하며, filterValue는 필터링할 값을 의미합니다. 필터링된 데이터는 filteredRecords에 저장되고, 해당 데이터는 printFilteredData 메소드를 통해 출력됩니다.

이렇게 OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 필터링할 수 있습니다.

참조: