상세 컨텐츠

본문 제목

JAVA 자바 Map, HashMap, EgovMap 값 확인하기

programing/JAVA&JSP&SERVLET&SPRING

by ZelKun 2021. 1. 19. 23:46

본문

반응형

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 전부 사용가능 합니다

 

반응형

관련글 더보기

댓글 영역