본문 바로가기

Java

[Java] Map for문 다양한 사용 방법과 이슈사항 해결방법

728x90

오늘의 포스팅 소개

Java에서 Map 항목을 반복하는 여러가지 방법을 정리한다.
EntrySet() , keySet() 또는 value() 를 활용하여 Map 조회.

EntrySet() :Map.Entry 클래스 에 있는 맵의 컬렉션 뷰를 반환. 
- Entry.getKey () : 맵의 키를 반환
- Entry.getValue() : 맵의 값을 반환

keySet() : 맵에 포함된 모든 키를 세트로 반환
values() : 맵에 포함된 모든 값을 세트로 반환

데이터 생성

Map<String, Object> map = new HashMap<String, Object>();
map.put("id", 1);
map.put("name", "hyedi");
map.put("url", "web-oing.tistory.com");

Interator 클래스 사용

Interator<String> keys = map.keySet().iterator();
while (keys.hasNext()) {
    System.out.printf("key : %s, value : %d%n", entry.getKey(), entry.getValue();
}

 

Map method 사용

 

Map.keySet()

for (String key : map.keySet()) {
    String value = map.get(key);
	System.out.printf("key : %s, value : %d%n", key, value);
}

 

values()

for (Integer value : map.values()) {
    System.out.println(value);
}

 

Map.Entry<>

for (Map.Entry<String, Integer> m : map.entrySet()) {
    String key = m.getKey();
    String value = map.get(key);
	System.out.printf("key : %s, value : %d%n", key, value);
}

 

map.forEach()

map.forEach((key, value) -> {
	System.out.printf("key : %s, value : %d%n", key, value);
});

 

실수했던 이슈

map.forEach((key, value) -> {
	System.out.printf("key : %s, value : %d%n", key, value);
	map.put("key",key);
	// → map 이 돌고 있을때 put을 하면 에러가 난다.
});

해결방법

Map<String, Object> addMap = new HashMap<String, Object>();
map.forEach((key, value) -> {
	System.out.printf("key : %s, value : %d%n", key, value);
	addMap.put("key",key);
});

 

 

반응형