#####################################
#  Iterating HashMap Tip            # 
#####################################

ÀÛ¼ºÀÚ : ÀåÇüÈ­(hhjang97@venus.uos.ac.kr)
ÀÛ¼ºÀÏ : 2004. 10. 12 
¼öÁ¤ÀÏ : 

¿øº» :
  http://java.freehosting.co.kr/mt/java/
¼³¸í :

  HashMap À» »ç¿ëÇÒ¶§ ¼º´É Â÷ÀÌ

################################# ################################# #################################

HashMapÀ̳ª Hashtable°ú °°Àº Ŭ·¡½º¸¦ iterator¸¦ »ç¿ëÇÏ¿© °¢ ¿£Æ®¸®µéÀ» ãÀ» ¶§ Map ÀÎÅÍÆäÀ̽º°¡ Á¦°øÇÏ´Â keySet(), entrySet(), values() µîÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù.
À̵é Áß ¾î´À °ÍÀÌ ´õ È¿À²ÀûÀϱî¿ä?
°£´ÜÇÑ Å×½ºÆ®¸¦ ÅëÇØ ¾Ë¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.

ù¹ø° ¹æ¹ýÀº keySet() À» »ç¿ëÇÏ¿© key¸¦ °Ë»öÇÑ ´ÙÀ½ Map¿¡ ´ëÇØ get()À» È£ÃâÇÏ¿© value¸¦ ±¸ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

Iterator it = map.keySet().iterator();
StringBuffer buffer = new StringBuffer();
while (it.hasNext()) {
	Object key = it.next();
	buffer.append("key=").append(key).append(",value=").append(map.get(key));
}

µÎ¹ø° ¹æ¹ýÀº entrySet()À» »ç¿ëÇÏ¿© key¿Í value¸¦ ±¸ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

Iterator it = map.entrySet().iterator();
StringBuffer buffer = new StringBuffer();
while (it.hasNext()) {
	Map.Entry entry = (Map.Entry) it.next();
	buffer.append("key=").append(entry.getKey()).append(",value=").append(entry.getValue());
}

¼¼¹ø° ¹æ¹ýÀº key Á¤º¸°¡ ÇÊ¿ä¾øÀ» ¶§ value¸¸À» Â÷·Ê·Î ÀоîµéÀÌ´Â ¹æ¹ýÀÔ´Ï´Ù.

Iterator it = map.values().iterator();
StringBuffer buffer = new StringBuffer();
for (int i = 0; it.hasNext(); i++) {
	buffer.append("value=").append(it.next());
}

¹°·Ð Å° Á¤º¸¸¸ ÇÊ¿äÇÒ ¶§¿¡´Â keySet()À» »ç¿ëÇÏ¸é µÇ°ÚÁö¿ä.
À§ÀÇ ¼¼ °¡Áö ¹æ¹ý Áß °¡Àå È¿À²ÀÌ ÁÁÀº °ÍÀº ¹°·Ð key °ª¿¡ ´ëÇÑ access¸¦ ÇÏÁö ¾Ê´Â values()ÀÇ °æ¿ìÀÔ´Ï´Ù. »ç½Ç ÀÌ °æ¿ì´Â ´Ù¸¥ µÎ °¡Áö¿Í Á÷Á¢ÀûÀÎ ºñ±³´Â Àǹ̰¡ ¾ø°ÚÁö¿ä.
¾Æ¹«·¡µµ ´Ù¸¥ ¿ëµµ¿¡ »ç¿ëµÇ´Â °ÍÀ̴ϱî¿ä.

¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀº ù¹ø°¿Í µÎ¹ø°Àε¥ °á·ÐÀûÀ¸·Î ¸»ÇÏÀÚ¸é, key¿Í value¸¦ ¸ðµÎ ã¾Æ¾ß ÇÏ´Â MapÀÇ ¼øÂ÷´Â entrySet()À» »ç¿ëÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀ̶ó´Â °ÍÀÔ´Ï´Ù.
keySet()ÀÇ °æ¿ì¿¡´Â key¸¦ °¡Á®¿Â ´ÙÀ½ ´Ù½Ã Map.get(key)¸¦ È£ÃâÇÏ¿© ÇØ½Ì ¾Ë°í¸®ÁòÀ» ¸Å¹ø °ÅÃÄ¾ß ÇϹǷΠ¾Æ¹«·¡µµ ¿£Æ®¸®¿¡ key, value ½ÖÀÌ ´Ù µé¾îÀÖ´Â entrySet() ¹æ½Ä¿¡ ºñÇØ ÇÁ·Î¼¼½ÌÀÌ ´õ µé ¼ö¹Û¿¡ ¾ø½À´Ï´Ù.
³»ºÎÀûÀ¸·Î lockÀ» »ç¿ëÇÏ´Â Hashtable °°Àº °æ¿ì¿¡´Â entrySet() ¹æ½ÄÀÌ keySet()°ú get()À» ÇÔ²² ¾²´Â ¹æ½Äº¸´Ù ´õ È®¿¬ÇÑ Â÷À̸¦ º¸¿©ÁÖ°Ô µË´Ï´Ù.

¹°·Ð key¸¸ ÇÊ¿äÇϰųª value¸¸ ÇÊ¿äÇÒ ¶§¿¡´Â ÇØ´çÇÏ´Â keySet()À̳ª values()¸¦ »ç¿ëÇÏ´Â °ÍÀÌ È¿À²ÀûÀÏ °ÍÀÔ´Ï´Ù.





#################################
# HashtableÀÇ °´Ã¼ ºÒ·¯¿À±â
#################################

Hashtable ht = new Hashtable();
for(Enumeration e = ht.keys(); e.hasMoreElements();) { 
        Oblect obj = ht.get((String)e.nextElement()); 
} 

#################################
# Áß°£ °´Ã¼ »èÁ¦Çϱâ - 2007.05.29
#################################
Iterator ¸¦ »ç¿ëÇÏ¸é ¾ÊµÈ´Ù.

		Hashtable pool = new Hashtable();
		pool.put("1", "test_1");
		pool.put("2", "test_2");
		pool.put("3", "test_3");
		
		String key = null;
		String value = null;
		for(Enumeration e = pool.keys(); e.hasMoreElements();) { 
			value = (String)pool.get((String)e.nextElement());
			System.out.println("Key : " + key + ", value:"+value);
			if (value.equals("test_2")) {
				pool.remove("2");
			}
			
		}