내일배움캠프 19일차 TIL - Iterator

2024. 5. 12. 23:15·⛺스파르타코딩클럽

240513

# 오늘 꼭 기억 해야 할 것!

오늘의 학습 

    ●  1. Iterator

 

Iterator룰 사용하면 컬렉션의 list를 표준화된 방식으로 값을 뽑을 수 있게된다. 이게 만들어진 목적인거같다.

즉, list, map, set 등등을 각자 다른 방식으로 값을 뽑게되는데 Iterator인터페이스를 통해 하나의 표준화된 방식으로

값을 뽑는다는 의미이다.

 

Iterator는 인터페이스이다. 컬렉션의 최상위 인터페이스인 Iterable인터페이스에 Iterator인터페이스를

반환타입으로 둔 iteraotr() 추상 메서드가 존재한다. 즉, 구현해야하는 추상 메서드가 존재한다는 말이다.

public interface Iterable<T> {
	Iterator<T> iterator();
}

이 추상 메서드를 직접 구현한 클래스는 컬렉션의 추상메서드를 구현한 ArrayList. map, set등이 존재한다.

List<String> list = new ArrayList<>(); // list 생성
        list.add("1"); // 값 넣기
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
// List의 구현체인 ArrayList의 재정의 된 메서드 중 iteraotr() 메서드를 호출
// 반환타입은 Iterator이다. 이유는 밑의 코드를 보고 확인하자.
Iterator<String> it = list.iterator();

iteraotr() 메서드를 호출하게 되면 아래의 코드와 같이 인터페이스를 통해 재정의한 iterator메서드를 호출하게 된다.

( 위치는 ArrayList 클래스이다. )

    public Iterator<E> iterator() {
        return new Itr();
    }

iterator메서드를 확인을 해보면 new Itr() -> Itr클래스를 생성 후 객체를 반환하는 걸 알 수 있다.

이때 반환타입은 Iterator이다. 이유는 Itr클래스가 Iterator인터페이스를 구현하고 있기 때문이다.

private class Itr implements Iterator<E> {
        public boolean hasNext() {}
        public E next() {}
}

구현한 메서드는 매우 많지만 가장 대표적으로 많이 쓰게 될 hasNext와 next메서드를 알아보자.

 

hasNext()

hasNext() 메서드는 list의 다음 요소의 값이 존재하는지 알려주는 메서드이다.

반환타입으로는 boolean타입으로 true/ false 를 반환 해준다.

next()

next() 메서드는 list의 요소를 직접적으로 접근해주어 순차적으로 next() 메서드를 통해 하나씩 요소의 값들을 읽어준다.

반환타입은 list의 들어간 요소들의 타입에 맞춰서 반환을 해준다.

 

참고로 Iterator는 1회용이라 한번 썻으면 다시 얻어와야한다.

이 두 메서드를 가장 많이 이용하는 이유는 예제코드로 확인을 하자.

while(it.hasNext()) {
    System.out.println(it.next());
}

list = it  -> list의 요소를 hasNext를 통해 다음의 값이 존재하는지 true / false를 통해 while문을 돌려

next() 메서드를 통해 값을 뽑아주는 역할을 한다. 가장 많이 쓰이는 방식이다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 21일차 TIL - Spring(IoC, DI)  (1) 2024.05.16
내일배움캠프 20일차 TIL - Spring(API)  (0) 2024.05.13
내일배움캠프 18일차 TIL - 람다(메서드 참조, 생성자 참조)  (0) 2024.05.10
내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스  (0) 2024.05.09
내일배움캠프 16일차 TIL - 개인 공부  (2) 2024.05.07
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 21일차 TIL - Spring(IoC, DI)
  • 내일배움캠프 20일차 TIL - Spring(API)
  • 내일배움캠프 18일차 TIL - 람다(메서드 참조, 생성자 참조)
  • 내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (143) N
      • 🎓방송통신대학교 (25) N
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (10) N
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (2)
      • ☕Java (13) N
        • 📝Java Programming (12) N
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방통대
    세계화
    클라우드
    유비쿼터스 컴퓨팅
    다형성
    방송통신대학교
    유비쿼터스
    spring
    Java
    함수
    자바
    컴파일러
    파이썬
    방송대
    컴퓨터의 이해
    유비쿼터스 컴퓨팅개론
    Python
    스프링
    클래스
    Spring Framework
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 19일차 TIL - Iterator
상단으로

티스토리툴바