1. 개요

이 빠른 자습서에서는 Java에서 맵 항목을 반복하는 다양한 방법을 살펴 보겠습니다.

간단히 말해서 keySet () , valueSet () 또는 entrySet ()을 사용하여 Map 의 내용을 추출 할 수 있습니다 . 이들은 모두 세트이므로 유사한 반복 원칙이 모두에 적용됩니다.

Map.entrySet의 API 요소로부터되는Map의 컬렉션 뷰를 반환 Map 클래스를. 단일 맵 항목에 대한 참조를 얻는 유일한 방법은이 콜렉션보기의 반복자에서 얻는 것입니다.

T 그는 entry.getKey () 키를 반환하고 entry.getValue ()는 해당 값을 반환합니다.

이들 중 몇 가지를 자세히 살펴 보겠습니다.

2. EntrySetfor 루프

먼저 엔트리 세트를 사용하여 반복 하는 방법을 살펴 보겠습니다 .

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

여기서 우리는 맵을 항목 집합으로 변환 한 다음 고전적인 for-each 접근 방식을 사용하여 반복합니다.

getKey () 를 호출하여 각 항목의 키에 액세스 할 수 있으며 getValue () 를 호출하여 각 항목의 값에 액세스 할 수 있습니다 .

3. 반복자EntrySet

또 다른 접근 방식은 항목 집합을 얻고 반복자를 사용하여 반복을 수행하는 것입니다 .

public void iterateUsingIteratorAndEntry(Map<String, Integer> map) {
    Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, Integer> entry = iterator.next();
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

entrySet ()iterator () API를 사용하여 Iterator 인스턴스를 얻는 방법에 주목하십시오 . 그런 다음 평소와 같이 iterator.next () 를 사용하여 반복기를 반복합니다.

4. Lambda로

이제이 반복하는 방법을 볼 수 있도록 Map를 사용하여 람다 식을.

Java 8의 다른 대부분과 마찬가지로 이것은 대안보다 훨씬 간단합니다. 우리는 단지의 사용을 만들거야 대해 forEach () 메서드를 :

public void iterateUsingLambda(Map<String, Integer> map) {
    map.forEach((k, v) -> System.out.println((k + ":" + v)));
}

이 경우 맵을 항목 집합으로 변환 할 필요가 없습니다. 람다 식에 대해 자세히 알아 보려면 여기에서 시작할 수 있습니다 .

5. 스트림 API

Stream API는 Java 8의 주요 기능 중 하나입니다.이 기능을 사용하여 을 반복 할 수도 있지만 이전 예제에서와 같이 먼저 항목 집합을 가져와야합니다.

public void iterateUsingStreamAPI(Map<String, Integer> map) {
    map.entrySet().stream()
      // ...
      .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue()));
}

추가 스트림 처리를 계획 할 때 사용해야합니다 . 그렇지 않으면 이전에 설명한대로 단순한 forEach () 입니다.

Stream API 에 대해 자세히 알아 보려면 이 문서를 확인 하세요 .

6. 결론

이 기사에서는 맵 항목을 반복하는 단순하지만 중요한 작업에 중점을 두었습니다.

Java 8에서만 사용할 수있는 두 가지 메서드, 즉 Lambda 표현식과 Stream API를 살펴 보았습니다 .

항상 그렇듯이이 기사의 코드 예제는 GitHub 에서 찾을 수 있습니다 .