DB에서 데이터를 받아올때 편의상 Map 을 많이 사용하는데요
간혹 Map 내용을 확인할 일이 발생하곤 합니다
디버그 모드를 쓰면 되긴하지만, F5, F6, F7 등등 loop끝날때까지 눌러주는것도 귀찮고
데이터 값만 슥 보기엔 디버그가 귀찮기때문데..
Key:Values로 된 데이터를 확인하려면 첫번째로 Key 가 필요한데
데이터 양이 많아지면 질수록 코드가 늘어날 수 밖에 없는데요
예로
package com;
import java.util.HashMap;
import java.util.Map;
public class PrintMap {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("first", "1");
map.put("second", 2);
String[] list = {"1", "2", "3"};
map.put("3", list);
Map<String, String[]> map2 = new HashMap<String, String[]>();
map2.put("list", list);
map.put("list", map2);
System.out.println("first:\t" + map.get("first"));
for(int i=0; i<map.size(); i++) {
System.out.println(i + ":\t" + map.get(i));
}
System.out.println();
System.out.println("map to String:\t" + map.toString());
}
}
/* 결과
first: 1
0: null
1: null
2: null
3: null
map to String: {3=[Ljava.lang.String;@5e91993f, list={list=[Ljava.lang.String;@5e91993f}, first=1, second=2}
*/
풍부한 예를 위해 Object로 만들어서 대충 때려넣어서 값을 확인못하는것도 있...
for 문을 사용해서 map size 만큼 돌리려고해도
index를 먹지 않으니... 쓸모없고
toString 을 사용해도 알수없는 문자를 돌려주는데요
그렇다고 key 값에 맞춰서 map.get("key")를 계속 써주는것도 일이니..
간단하게
map.keySet() 을 사용하면 key 값을 뽑아올수 있습니다
변경된 소스
package com;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class PrintMap {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("first", "1");
map.put("second", 2);
String[] list = {"1", "2", "3"};
map.put("3", list);
Map<String, String[]> map2 = new HashMap<String, String[]>();
map2.put("list", list);
map.put("list", map2);
printMap(map);
}
public static void printMap(Map map) {
Iterator<String> k = map.keySet().iterator();
while(k.hasNext()){
String key = k.next();
System.out.println(key + "\t:" + map.get(key));
}
}
}
/** 결과
3 :[Ljava.lang.String;@5e91993f
list :{list=[Ljava.lang.String;@5e91993f}
first :1
second :2
**/
printMap 이라는 함수를 만들고, main에서 만든 map을 전달해줬는데요
이때도 문제가, list, array 는 알수 없는 문자로 표시되는 문제가 있긴 하지만
일일히 key 값을 확인하고 입력하는 수고는 줄었네요
value 의 Class를 보고 Map인경우에 printMap 을 한번터 태우는 방법도 있고
방법은 많지만 일단 목표는 달성(?) 했으니 여기까지 하는걸로...
참고로 Map, HashMap, EgovMap 전부 사용가능 합니다
JAVA 자바 HttpServlet Request Param 확인 (1) | 2021.01.20 |
---|---|
JAVA 자바 List, ArrayList, array 리스트, 배열 값 확인하기 (0) | 2021.01.20 |
JSP/SERVELT HTML Character Entity 특수문자 치환 StringEscapeUtils & 처리 (0) | 2019.11.30 |
[JSP/SERVLET/SPRING] 다운로드 한글파일명 처리 (0) | 2019.08.24 |
JSTL문법 <c:forEach> c:tag를 이용한 리스트 출력 (0) | 2018.01.01 |
댓글 영역