본문 바로가기
프로그래밍/JAVA

JAVA 기본 String을 Map으로 변환하기 ( 예제 )

by 애플 로그 2023. 4. 19.
반응형

String의 문자열을 특정 구분자로 잘라서 map형태로 써야하는 경우가 개발하다보면 종종 있습니다.

이번에 정리 하려는 내용은 기본 String -> map으로 변환하기 입니다.

string to map 썸네일

제 경우는 DB에 있는 config 설정 값, 예를 들면 아래와 같은 key:value 형태로 저장되어있는 string 값 입니다.

"key1:value1;key2:value2;key3:value3;"

위와 같은 값을 DB에서 읽어 바로 java map 으로 만들어서 바로 쓰기 위해서 사용 하였습니다.

코드 예제

문자열을 입력받아, 키:값 분리하여 Map<string, string=""> 형태로 반환하는 코드를 작성 해보도록 하겠습니다.

코드 예제는 아래에서 자세히 알아보시기 바랍니다.


@param input 분리할 문자열
@param pairSeparator 키-값 쌍들 사이를 구분하는 구분자
@param keyValueSeparator 키와 값 사이를 구분하는 구분자
@return 입력된 문자열에서 분리된 키-값 쌍들로 이루어진 Map<String, String> 객체
@throws IllegalArgumentException 입력된 문자열이 올바르지 않은 경우에는 예외를 발생

public static Map<String, String> parseKeyValuePairs(String input, String pairSeparator, String keyValueSeparator) {
        if (input == null || pairSeparator == null || keyValueSeparator == null) {
            return null;
        }

        String[] pairs = input.split(pairSeparator);
        if (pairs.length == 0) {
            throw new IllegalArgumentException("Invalid input: " + input);
        }

        Map<String, String> map = new HashMap<>();
        for (String pair : pairs) {
            String[] keyValue = pair.split(keyValueSeparator);
            if (keyValue.length == 2) {
                map.put(keyValue[0], keyValue[1]);
            }
        }
        return map;
    }

코드에 대한 설명은 아래에서 자세히 알아보시기 바랍니다.

코드 상세 설명

문자열을 입력받아, 키-값 쌍을 분리하여 Map<string, string> 형태로 반환하는 메서드 입니다.

입력된 문자열에서 쌍들은 seperatorPairs로 구분되고, 쌍 내에서 키와 값은 seperatorkeyValue로 구분하게 됩니다.

메소드 내부에서는 입력값이 null인지 검사하고, 입력값이 null이면 null을 반환합니다. 이후 입력 문자열을 seperatorPairs 기준으로 분할하여 배열에 저장합니다.

분할한 결과 배열이 null이면 IllegalArgumentException을 발생시킵니다. 이후 배열의 각 쌍을 seperatorkeyValue 기준으로 분할하여 Map에 추가합니다.

만약 분할한 결과가 유효한 키-값 쌍이 아닌 경우, Map에 추가하지 않습니다.
마지막으로 완성된 Map을 반환합니다.

사용 방법 및 결과

    public static void main(String[] args) {

        String inputString = "key1:value1;key2:value2;key3:value3;";

        Map<String, String> map = parseKeyValuePairs(inputString, ";",":");

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

결과

key1 - value1
key2 - value2
key3 - value3

java8 stream List를 Map으로 변환

java8 stream List를 Map으로 변환 자바 Stream이란? 자바 스트림 이란 자바8에 추가된 기능으로 컬렉션과배열 등 데이터를 처리하는데 아주 유용한 기능이다. 비유를 하자면 물이 스트림을 타고 흐르는

www.appletong.com

java8 stream의 쉬운 사용방법 (map, filter, collect)

java8 stream의 쉬운 사용방법 (map, filter, collect) java8부터 지원 되는 대표적인 API인 stream에 대해 알아보려고 한다. Stream은 컬렉션, 배열에 저장되어 있는 요소들을 하나씩 참조하며 반복적인 처리를

www.appletong.com

댓글