본문 바로가기
자바(Java)/자바(Java) 잡다

자바(Java) Iterator와 hasNext() / next() / remove()

by 인생즐겜러 2023. 2. 2.
728x90
반응형

 

Scanner 클래스에 있는 hasNext()와는 다른 아이임을 선고지 함.

 

 

 

 

 

1. 배경 설명

 

 

 

 

Collection framework

데이터를 저장하는 클래스들을 표준화 한 설계

 

그 하위의 인터페이스 (Set / List / Map) 은 데이터의 집합체들이다.

 

 

 

Iterator

- 위의 데이터 집합체에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 인터페이스를 말한다.

- 원래는 각 인터페이스 별로 데이터를 읽을 방법을 알아야 하는데

  이 인터페이스를 사용하면 어떤 Collection 이라도 동일 방식으로 안에 있는 데이터에 접근이 가능.

  즉, 쉽게쉽게 데이터 얻어 오기 위한 인터페이스라는 것.

- Vector<E>, ArrayList<E>,LinkedList<E> 가 상속받는 인터페이스 

- 리스트 구조의 컬렉션에서 요소의 순차검색을 위한 메소드 포함

- 순방향으로 한번에 하나의 데이터 밖에 못가져온다.

 

 

 

hasNext() / next() / remove()

이 인터페이스가 지니고 있는 메소드가 위의 함수들이다.

 

  • hasNext()
    Iterator는 내부적으로 데이터저장소에서 자신이 가리키고 있는 지점을 알고 있는데 이동할 항목이 있는지를 체크하는 메소드. 다음에 읽어 올 요소가  있으면 true, 없으면 false 를 반환. 
  • next() : 데이터저장소에서 현재위치를 순차적으로 하나 증가해서 이동. 다음 요소의 값을 가져옴. 
  • remove() : next()로 읽어온 요소를 삭제.

 

 

 

Iterator 사용 장점

종류에 상관없이 다 쓸 수 있기에 Collection이 정해지지 않았을 때 사용할 수 있다.

 

단점

느리다.

 

 

 

 

 


 

 

 

 

 

사용 예시

 
 Collection 객체들이 아래와 같이 있다.

 

Vector<> vec = new Vector<>();

LinkedList<Member> link = new LinkedList<Member>();

Set<String> set = new Set<>(String);

 

 

 

위의 객체에 맞게 Iterator 객체는 아래처럼 얻을 수 있다.

 

Iterator iter0 = arr.iterator();  //vector의 요소를 순차 검색할 객체

Iterator<> iter1 = vec.iterator<>();

Iterator<Member> iter2 = link.iterator<Member>();

Iterator<String> iter3 = set.iterator<String>();

 

 

 

이후 while 문 - hasNext() - next() 로 하나씩 값을 얻는다.

 

 while(iter0.hasNext()){

    String set = (String)iter0.next();

 }
728x90
반응형

댓글