for each문 설명글에서 이어지는 내용이다
2025.04.24 - [프로그래밍언어/Java] - 자바 프로그래밍(1) - for each문
자바 프로그래밍(1) - for each문
알고리즘 공부를 하다가 for each문이 나와서 글을 작성해본다.학부에서 Java를 공부할 때 for each문을 접해본 적이 없었는데NHN 아카데미 자바 백엔드 과정을 수료하면서 처음 배웠던 기억이 있다...
fkqlaus.tistory.com
for each문 직접 구현해 보기
Iterable은 직접 구현할 수 있는데

Iterable 인터페이스를 보면 iterator라는 함수를 정의해줘야 한다.

그렇다.
Iterator에서 hasNext()와 next()를 구현하면 Iterable을 사용할 수 있다!
그렇다면 hasNext()와 next()는 각각 어떤 역할을 하는 걸까
| hasNext() | 다음 요소가 있는지 검사 | 반복 종료 조건 |
| next() | 다음 요소 반환 후 이동 | 호출 전에 hasNext()로 꼭 확인 |
즉 hasNext()는 다음에 꺼낼 요소가 있는가?를 확인하고
있다면 true 없다면 false를 반환하는 함수
next()는 현재 위치의 요소를 반환하고 다음 위치로 이동하는 함수!
class MyCollection implements Iterable<String> {
private String[] data;
public MyCollection(String[] data) {
this.data = data;
}
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
private int index = 0; // 현재 위치
@Override
public boolean hasNext() {
return index < data.length;
}
@Override
public String next() {
return data[index++];
}
};
}
}
String에 대해 Iterable을 사용할 수 있는 클래스를 직접 구현해 봤다.
생성자를 통해서 String 배열 data를 받아오고
현재 위치를 알 수 있는 index 설정
hasnext()를 통해 다음 요소가 있는지 검사
next를 통해 값 반환정도 구현을 하면

iterator 인터페이스에 있는 forEachRemaining 함수를 통해
for each문이 실행된다고 보면 될 것 같다.
아래는 전체코드!
import java.util.Iterator;
public class Main {
public static void main(String[] args){
String[] fruits = {"Apple", "Banana", "Cherry"};
// 외부에서 데이터 주입
MyCollection myCollection = new MyCollection(fruits);
for (String fruit : myCollection) {
System.out.println(fruit);
}
}
}
class MyCollection implements Iterable<String> {
private String[] data;
public MyCollection(String[] data) {
this.data = data;
}
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
private int index = 0; // 현재 위치
@Override
public boolean hasNext() {
return index < data.length;
}
@Override
public String next() {
return data[index++];
}
};
}
}
'Java' 카테고리의 다른 글
| [Java] 제네릭 (Generic) 완전 정복 T와 와일드 카드 (0) | 2026.06.17 |
|---|---|
| [Java] HashMap 은 뭐고 어떻게 동작 하는 걸까? (0) | 2026.04.03 |
| Java - Collection Framework란? (0) | 2025.04.24 |
| Java - 면접 질문으로 다시 보는 Java의 List와 구현체(ArrayList 등)와 관계 (2) | 2025.04.24 |
| Java - for each문 (0) | 2025.04.24 |