티스토리 뷰
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
반응형
'프로그램 언어 > JAVA' 카테고리의 다른 글
java xml 정보 Sax 방식을 이용한 파싱 방법 (0) | 2023.05.02 |
---|---|
클라이언트 실제 접속 IP 가져오는 방법 (0) | 2023.05.02 |
java 엑셀 파일 읽기 대용량 문제 처리 방법 part2 (1) | 2023.05.02 |
java 엑셀 파일 읽기 기능 part1 (0) | 2023.05.02 |
자바(java) for 문의 종류 (0) | 2023.05.02 |
250x250
반응형
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- leatcode
- spring
- 리눅스
- MySQL
- LocalDate
- 도커
- hazelcast
- ncp
- 캘린더
- 권한
- centos7
- 캐시
- 격리수준
- 이미지
- dfs
- Java
- insert
- 정의
- 컨테이너
- Linux
- dockerfile
- 스케줄러
- docker
- 개념 이해하기
- Lock
- mybatis
- Cache
- Quartz
- 네이버 클라우드
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함