향상된 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 |