개발/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(",")
//스트림의 모든 요소를 구분자를 넣어서 하나의 문자열로 결합