티스토리 뷰

728x90
반응형
 map 데이터 비교하기
함수 종류
map.getOrDefault :  찾는 키가 존재한다면 찾는 키의 값을 반환 아니면 기본 값을 반환 (map의 특정 키값으로 비교하는 함수 for문 대신 사용 가능)
ex ) result.add(map.getOrDefault(element,getEmtpyMap(element));
getEmtpyMap 사용자 설정 함수 : 초기값으로 설정해놓았음
-> map 안에 들어있는 값과 element 라는 list의 값을 비교하여 true 일경우 element를 현재 맵의 값을 반환 false 일경우 getEmtpyMap 사용자 설정 값을 반환 

예시 코드

//초기값 함수
private Map getEmtpyMap(String element) {
         Map<String,String> resultmap = new HashMap<String,String>();
         resultmap.put("emdnm", element);
         resultmap.put("count","0");
         resultmap.put("walistCnt","0");
         resultmap.put("warate","0");
         return resultmap;
}

//결과 전체 코드
Map<String,Map> map =new HashMap<String,Map>();
for(int i =0; i<list.size(); i++) {
    map.put(list.get(i).get("emdnm"),list.get(i));
}
for(String element : areaList) {
    result.add(map.getOrDefault(element, getEmtpyMap(element)));
}
return result;
Default 함수 사용을 하지 않았을 경우는 코드가 너무 길어짐을 확인할 수 있다.

예시)

//기존 처리 하던 방법 (코드가 너무 김...)
for(String element : areaList) {
        Map<String,String> resultmap = new HashMap<String,String>();
        if(list.size() > 0 && list != null) {
            for(int i = 0; i<list.size(); i++) {
                if(element.equals((String)list.get(i).get("emdnm"))) {
                     resultmap.put("emdnm",(String)list.get(i).get("emdnm"));
                     resultmap.put("count",String.valueOf(list.get(i).get("count")));
                     resultmap.put("walistCnt",String.valueOf(list.get(i).get("walistCnt")));
                     resultmap.put("warate",String.valueOf(list.get(i).get("warate")));
                     map.add(resultmap);
                    // flag = true;
                     break;
                }
            }
            if(!flag) {
                 resultmap.put("emdnm",element);
                 resultmap.put("count","0");
                 resultmap.put("walistCnt","0");
                 resultmap.put("warate","0");
                 map.add(resultmap);
            }
            flag = false;
        }
 }

결과 출력속도는 거의 비슷하겠지만

다만 유지보수 하는 입장에서는 코드가 길어지게 되면 생산성에 있어서 비효율적인 요소가 된다.

그렇기 때문에 코드 리팩토링을 해야하는 것이고 디자인 패턴 관련해서 공부를 해야한다.

728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함