Developer's Development

[JAVA] Pattern, Stream 클래스를 통한 List 원소 상수 처리 본문

개발/JAVA

[JAVA] Pattern, Stream 클래스를 통한 List 원소 상수 처리

mylee99 2023. 3. 23. 21:49

case)

DB에 저장되어 있는 영문 약자(콤마로 구분되어 있는 String)를 상수 처리한 한글로 변환하여 화면 List에 반환하고자 함.

 

VVO, FUK, PUS
▶ 블라디보스톡, 후쿠오카, 부산

 

1. 상수 처리 클래스
public static class airportNm {
	final public static String VVO = "VVO";
    	final public static String FUK = "FUK";
    	final public static String PUS = "PUS";
    
        public static String getValue(String Key) {return map.get(key);}

        public final LinkedHashMap<String, String> map = new LinkedHashMap<>();
        static {
            map.put(VVO, "블라디보스톡");
            map.put(FUK, "후쿠오카");
            map.put(PUS, "부산");
        }
}

 

2. Service 클래스 (List 뿌리는 부분)

stream 형태로 바꾸고, map 함수를 통해 각 원소에 상수 처리된 값을 대입시킨 후 마지막에 다시 collect

public List<MyleeVo> getConstList(MyleeVo myleeVo) throws Exception {
    List<MyleeVo> list = myleeMapper.selectMenuList(myleeVo);
    
    for(MyleeVo row : list) {
		row.setAirportNm( Pattern.compile(",")
        	.splitAsStream( row.getAirportNm().trim() )
                .map( s -> Const.airportNm.getValue(s) )
                .collect( Collectors.joining(",") ) );
    }
    
    return list;
}

 

  • Pattern 클래스 (java.util.regex)

Pattern.compile(String regex) 

//주어진 정규표현식(regex)으로부터 패턴 생성

.splitAsStream(charSequence) 

//분할된 단일 매개변수(charSequence)를 매개변수로 받음. 패턴의 일치 항목을 기준으로 입력을 분할하여 계산된 문자열 스트림을 반환

 

 

  • Stream 클래스 (java.util.stream)

<R> Stream<R> map(Function<? super T, ? extends R> mapper);
.map(s -> {}) 

//요소들을 람다식을 적용해 특정 조건에 해당하는 값으로 변환

<R, A> R collect(Collector<? super T, A, R> collector);
.collect(Collectors.joining(",") 

//스트림의 모든 요소를 구분자를 넣어서 하나의 문자열로 결합

Comments