본문 바로가기

정리/Language

Java로 구분자 기준으로 여러행 나누기

728x90

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DataTableProcessor {
    public static void main(String[] args) {
        // 초기 DataTable을 List of Map으로 가정
        List<Map<String, String>> result_dt = new ArrayList<>();

        // 예시 데이터 추가
        Map<String, String> row1 = new HashMap<>();
        row1.put("Column1", "1234$1233$5555");
        row1.put("Column2", "SomeValue1");
        result_dt.add(row1);

        Map<String, String> row2 = new HashMap<>();
        row2.put("Column1", "8888$9999");
        row2.put("Column2", "SomeValue2");
        result_dt.add(row2);

        // 변환된 결과를 저장할 리스트
        List<Map<String, String>> transformed_dt = new ArrayList<>();

        // 각 행을 처리하여 Column1의 값을 분리하고 행을 확장
        for (Map<String, String> row : result_dt) {
            String column1Value = row.get("Column1");
            String column2Value = row.get("Column2");

            // Column1의 값을 '$' 구분자로 분할
            String[] splitValues = column1Value.split("\\$");

            // 각 분할된 값으로 새로운 행을 생성하고 transformed_dt에 추가
            for (String value : splitValues) {
                Map<String, String> newRow = new HashMap<>();
                newRow.put("Column1", value);
                newRow.put("Column2", column2Value);  // Column2 값은 동일하게 유지
                transformed_dt.add(newRow);
            }
        }

        // 결과 출력
        System.out.println("Transformed DataTable:");
        for (Map<String, String> row : transformed_dt) {
            System.out.println(row);
        }
    }
}

 

 

코드 설명

  1. 초기화 및 데이터 설정:
    • result_dt는 원본 데이터가 담긴 리스트로, 각 행은 Map<String, String> 구조를 사용하여 각 열을 키-값 쌍으로 저장합니다.
    • Column1에는 $로 구분된 문자열, Column2에는 다른 값이 들어 있습니다.
  2. 반복문을 통한 데이터 변환:
    • result_dt의 각 행을 순회하며 Column1의 값을 $를 기준으로 분할합니다.
    • splitValues 배열의 각 요소는 새로운 행의 Column1 값이 됩니다. Column2 값은 원본 데이터와 동일하게 유지됩니다.
  3. 변환된 데이터 추가:
    • 분할된 각 값에 대해 새로운 Map<String, String>을 생성하고, transformed_dt 리스트에 추가하여 변환된 데이터 테이블을 생성합니다.