이전 포스팅과 연결됩니다..!

https://bdisappointed.tistory.com/64

 

[Java] 컬렉션 - Iterable, Iterator 직접 구현해보기 (1)

오늘의 포스팅은 컬렉션 프레임 워크 중에 우리가 흔히 인텔리제이 에서 iter 이란 키워드로 편하게 배열을 탐색하게 해주는 바로 그 기능에 대해 포스팅 하고자 한다!사실 이전에 그냥 개꿀 기

bdisappointed.tistory.com


지난번 포스팅에서는 Iterable과 Iterator를 직접 구현해보았다.

근데 그래서 우리가 인텔리제이에서 쓰는 iter, 즉 향상된 for 문이랑 이게 머선 상관인데?


향상된 for문 (for- each 문)

지난 포스팅에서 작성했던 코드에 for - each 문을 살짝쿵 추가해보자

public class MyArrayMain {
    public static void main(String[] args) {

        MyArray myArray = new MyArray(new int[]{1, 2, 3, 4});

        Iterator<Integer> iterator = myArray.iterator();
        System.out.println("iterator 사용");
        while (iterator.hasNext()) {
            Integer value = iterator.next();
            System.out.println("value = " + value);
        }

		//여기에 코드 추가
        System.out.println("for-each 사용");
        for (Integer value : myArray) {
            System.out.println("value = " + value);
        }
    }
}

실행 결과는 아래와 같다

자, 여기서 하고 싶은 말은,

for-each문은 배열과 같은 자료구조를 순회하는 것이 가장 주된 목적이다.

그래서 자바는 Iterable 인터페이스를 구현한 객체에 대해서 for-each문을 사용할 수 있도록 제공해준다

우리는 이전에 MyArray라는 직접 만든 자료구조를 Iterable 인터페이스의 구현체로 만들어둔 덕분에, 편하게 배열을 순회 할 수 있는 것이었다!


정리 = Iterable의 구현체만 for-each문 사용 가능하다

즉 for-each문을 사용하면 컴파일러가 컴파일 시점에

이 코드로 변환하여 해석한뒤, 로직을 수행한다. 즉 위에서 활용했던 두 코드는 서로 같은 기능을 하는 코드이다.

여전히 중요한 개념은, 

Iterable 해야, Iterator을 사용할 수 있다

 

를 다시 한번 마음에 깨닫길 바란다!

 

다음 포스팅은 Java가 제공하는 Iterable과 Iterator에 대해 포스팅하고 다음 개념으로 넘어가야겠다!

 

아직 포스팅 해야할게 산더미인데.. 언제나 포스팅이 최종 복습이다 생각하고 최선을 다하자!

아자 아자 화이자!