본문 바로가기
Java

[Java] Collections(2-1)_Map 반복문 도는 여러방식

by happyhelen 2021. 11. 3.

시작하기 앞서 모든 map 은 다음의 <key, value> 를 선행했다고 가정한다

 

Map<String, String> map = new HashMap<String, String>();
map.put("서울", "123");
map.put("부산", "456");
map.put("인천", "789");
map.put("대전", "234");
map.put("일산", "567");

 


 

1. EntrySet()

 

EntrySet() 은 <key, value> 값 모두를 대상으로 한다

 

for (Map.Entry<String, String> entry : map.entrySet()) {
	System.out.println("key: " + entry.getKey() + "value: " + entry.getValue());
}

 

 

Iterator 반복자를 쓰고자 하면 다음과 같다

 

Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();

while (itr.hasNext()) {

	Map.Entry<String, String> entry = (Map.Entry<String, String>) itr.next();
   	String key = entry.getKey();
   	String value = entry.getValue();
    
   	System.out.println("[key]:" + key + ", [value]:" + value);
}

 

 

 


 

 

2. keySet() , values()

 

KeySet() 은 key 만을, values()는 value 만을 대상으로 한다

 

 

keyset() 

for (String key : map.keySet()) {
	String value = map.get(key);
    System.out.println("key: " + key + " value: " + value);
}

단, keyset() 으로는 key 뿐만 아니라 value 도 조회할 수 있지만 시간이 많이 소모되는 단점이 있다

 

 

 

Iterator 반복자를 쓰고자 하면 다음과 같다

 

Iterator<String> itr = map.keySet().iterator();

	while (itr.hasNext()) {
    
		String key = itr.next();
		String value = map.get(key);
    
		System.out.println("[key]:" + key + ", [value]:" + value);
}

 

 


 

 

values()

for (String value : map.values()) {
    System.out.println("Value: " + value);
}

 

 

Iterator 반복자를 쓰고자 하면 다음과 같다

 

Iterator<String> itr = map.values().iterator();

	while (itr.hasNext()) {
    
		String value = itr.next();
    
		System.out.println("value: " + value);
}

 

 

 


 

 

++ 아직 공부중인 방법들

더보기

3. Stream

 

map.entrySet().stream().forEach(entry-> {
	System.out.println("key: " + entry.getKey() + " value: "+entry.getValue());
});

 

 

 

4. Lamda

 

map.entrySet().stream().forEach(entry-> {
	System.out.println("key: " + entry.getKey() + " value: "+entry.getValue());
});