June

<자바기초> map에서 iterator 사용하기

iterator를 사용할 수 없는 컬렉션인 Map에서 iterator를 사용하려면 2가지 키워드가 있습니다.
바로 Map.keyset(), Map.entrySet() 입니다. 둘 다 각자의 특성이 있어서 어떤 것이 더 좋다 비교하기는 어렵습니다.

Map.entrySet()

static void iteratorUsingEntrySet1(HashMap map)
{
    Set<Map.Entry<String, Integer>> entries = map.entrySet();
    Iterator<Map.Entry<String, Integer>> i = entries.iterator();

    while(i.hasNext()) {
        Map.Entry<String, Integer> entry = i.next();
        System.out.println(entry.getKey() + " : " + entry.getValue());
    }
}

간단하게 사용해보겠습니다.

static void iteratorUsingEntrySet2(HashMap map)
{
    Iterator i = map.entrySet().iterator();

    while(i.hasNext()) {
        Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)i.next();
        System.out.println(entry.getKey() + " : " + entry.getValue());
    }
}

Map.keySet()

static void iteratorUsingKeySet(HashMap map)
{
    Set<String> entries = map.keySet();
    Iterator<String> i = entries.iterator();

    while(i.hasNext()) {
        String key = i.next();
        Object value = map.get(key);
        System.out.println(key + " : " + value);
    }
}

간단하게 사용해보겠습니다.

static void iteratorUsingKeySet(HashMap map)
{
    Iterator i = map.keySet().iterator();

    while(i.hasNext()) {
        String key = (String)i.next();
        Integer value = (Integer)map.get(key);
        System.out.println(key + " : " + value);
    }
}

비슷한 두가지 방식 때문에 헷갈릴 요소가 다분합니다. iterator가 편리한 요소이니 만큼 위험한 부분이 많으므로 조심해서 사용해야합니다.