Java/Java 문법

for문을 통해 Map을 순회하기

열심히 해 2024. 9. 19. 11:19

향상된 for문을 사용하여 Map을 순회하려고 하면 오류가 난다.

 

< 향상된 for문>

  • for 소괄호 안에 조건을 3개에서 2개로 줄인다.
  • 향상된 for 문은 연속된 변수 목록을 출력할 때 사용.
  • 형태 : for (변수타입 변수명 : 목록변수)  { (연산) }
  • `변수 타입`과 `변수명`은 for문 안에서 연산을 수행할 변수를 정의

 

변수 목록에 Map을 넣는 게 불가능하다. 아래와 같은 방법으로 for문에서 Map을 순회할 수 있다.

 

  • entrySet() 을 통해 키-값 쌍을 Map.Entry 객체로 가져오기
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

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

 

  • keySet() 을 통해 key를 순회
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

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



  • forEach 메서드 사용
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        // forEach 사용
        map.forEach((key, value) -> {
            System.out.println(key + ": " + value);
        });
    }
}

 

 


 

 

위 향상된 for문을 기본 for문으로 바꾸기.

Map을 기본 for 문을 사용하여 순회하려면, 키를 keySet()으로 가져오고 인덱스를 사용해 접근해야 한다. Map은 인덱스를 지원하지 않기 때문에, keySet()의 키를 배열로 변환한 후 인덱스를 사용하여 반복할 수 있다.

 

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        // keySet()을 사용하여 기본 for문으로 순회
        Set<String> keys = map.keySet();
        String[] keyArray = keys.toArray(new String[0]); // 키 배열로 변환

        for (int i = 0; i < keyArray.length; i++) {
            String key = keyArray[i];
            Integer value = map.get(key);
            System.out.println(key + ": " + value);
        }
    }
}

'Java > Java 문법' 카테고리의 다른 글

if를 나열하는 것과 if - else if 의 차이  (0) 2024.09.23
scanner.next() , scanner.nextInt() , scanner.nextLine()  (0) 2024.09.23
Set  (0) 2024.09.16
Java에서 난수 만들기  (0) 2024.09.13
Java 문법 10 (제네릭)  (0) 2024.09.10