for-each
- 자바에서 for-each 는 컬렉션이나 배열의 요소를 반복(iterate)하는데 사용하는 간단하고 직관적인 방법
- for-each 구문은 주로 Iterable 타입(ex. List, Set, 배열 등) 의 요소를 순차적으로 처리할 때 사용
for-each 기본 구조
for (타입 변수 : 컬렉션 또는 배열) {
}
타입: 반복할 요소의 타입
- ex) String, int, Long ...
변수: 컬렉션 또는 배열에서 하나씩 꺼내는 요소를 담을 변수
컬렉션 또는 배열: 순차적으로 반복할 대상 (배열, 리스트, set 등)
for-each 구문을 사용하는 이유
1. 가독성
2. 효율성
- 반복문에서 인덱스를 따로 관리할 필요가 없고, 컬렉션 또는 배열의 요소를 직접 처리할 수 있다.
3. 안정성
- 인덱스 오류나 NullPointerException 등의 위험을 줄일 수 있다.
Ex. 배열에서 for-each 사용

출력 값
1
2
3
4
5
Ex. 리스트에서 for-each 사용

출력 값
salah
jordan
mane
Ex. Java8 for-each() 메소드 사용
Java8부터 for-each() 메소드도 Iterable 인터페이스도 추가되었고, 이는 람다 표현식과 함께 사용할 수 있어 더 간결하고 함수형 스타일로 반복을 처리할 수 있다.

출력 값
salah
jordan
mane
for-each 장점과 단점
장점
- 코드 간결성: 코드가 매우 간결해진다.
- 인덱스 사용 불필요: for-each 구문은 인덱스를 관리하지 않아도 되므로, 인덱스 관련 오류를 방지할 수 있다.
- 읽기 용이성: 코드가 간단하여 읽기 쉬운 장점이 있다.
단점
- 인덱스 접근 불가: for-each 에서는 인덱스를 직접 사용하여 특정 요소에 접근하거나 수정할 수 없다.
- 컬렉션 수정 제한: 반복문 중에 컬렉션의 구조 (예: 추가/수정)를 변경할 수 없습니다.
예를 들어, ArrayList 에서 요소를 삭제하면서 반복하면 ConcurrentModificationException 이 발생할 수 있다.
결론
for-each 는 자바에서 반복문을 간결하게 작성할 수 있도록 도와주는 유용한 기능
주로 컬렉션이나 배열의 모든 요소에 대해 작업을 수행할 때 사용된다.
그러나 인덱스가 필요하거나 컬렉션을 수정해야 하는 경우에는 전통적인 for 문을 사용하는 것이 더 적합하다.