Java - for each문 직접 구현해보기

2025. 4. 24. 04:12·Java
반응형

 

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 인터페이스

 

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

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 인터페이스

 

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
'Java' 카테고리의 다른 글
  • [Java] HashMap 은 뭐고 어떻게 동작 하는 걸까?
  • Java - Collection Framework란?
  • Java - 면접 질문으로 다시 보는 Java의 List와 구현체(ArrayList 등)와 관계
  • Java - for each문
fkqlaus
fkqlaus
안녕하세요 Java, Spring boot 공부하는 주니어 개발자입니다
  • fkqlaus
    개발자가 끄적끄적 블로그
    fkqlaus
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Spring boot (3)
      • 프레임워크 (3)
      • Java (6)
      • DevOps (3)
      • DB (1)
      • CS (1)
      • GIS (1)
      • 알고리즘 문제풀이 (9)
      • 알고리즘 (0)
  • 인기 글

  • 태그

    D2
    컴퓨터
    완전탐색
    코딩테스트
    개발자
    cs
    SWEA
    docker
    개발
    서버
    db
    DevOps
    collection
    iterator
    spring
    알고리즘
    데이터베이스
    프로그래머스
    Java
    list
  • hELLO· Designed By정상우.v4.10.3
fkqlaus
Java - for each문 직접 구현해보기
상단으로

티스토리툴바