Programming language/Java

[Java]Iterator

  • -
반응형
Iterator

List와 빼먹을 수 없는 것이 Iterator 인터페이스이다.

 

Iterator는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 것이다.

컬렉션 프레임워크란 데이터를 저장하는 클래스들을 표준화한 설계이다.

컬렉션 프레임워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다.

 

 

Set, List, Map은 어떤 데이터들의 집합체라고 볼 수 있다. 

Set과 List는 데이터의 그룹(Collection)이다.

Set은 순서를 유지하지 않는 데이터의 집합이다. 데이터의 중복이 허용되지 않고 HashSet, TreeSet 등이 있다.

 

List는 순서를 유지하는 데이터의 집합이다. 데이터의 중복이 허용되며 Vector, LinkedList, ArrayList 등이 있다.

List 클래스에 대해서는 한번 다룬적이 있다. ☞ List 클래스

 

Map은 키(Key)와 값(Value)으로 이루어진 데이터의 집합이다. 순서는 유지되지 않으며 키는 중복을 허용하지 않는다.

Map의 클래스로는 TreeMap, Hashtable, HashMap 등이 있다.

 

Iterator는 이런 집합체로부터 정보를 얻어낸다고 볼 수 있다. 집합체를 다룰 때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야하기 때문에 각 컬렉션에 접근이 힘들어진다. Iterator를 쓰게 되면 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여 그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다.(다형성

 

Iterator의 메소드에는 hasNext(), next(), remove()가 있다. 

각각의 기능은 다음과 같다.

 

  • hasNext() : 읽어올 요소가 남아있는지 확인하는 메소드. 요소가 있다면 true, 없다면 false
  • next() : 다음 데이터를 반환한다.
  • remove() : next()로 읽어온 요소를 삭제한다.

메소드의 호출 순서는 hasNext() -> next() -> remove() 이다.

 

아래는 Iterator를 사용한 예제이다.

리스트에 들어있는 "일","월","수"  중에서 "수"라는 데이터를 삭제하는 예제이다.

package biz.test;

import java.util.ArrayList;
import java.util.Iterator;

public class ListTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("LIST CREATED.");
        
        ArrayList list = new ArrayList();
        
        list.add("일");
        list.add("월");        
        list.add("수");

        Iterator iter = list.iterator();
        
        while(iter.hasNext()==true){
            String day = (String)iter.next();
            if(day == "수"){
                iter.remove();            
            }
            System.out.println("Day : " + day);                        
        }
       
        System.out.println("-----------------");
        iter = list.iterator();
        while(iter.hasNext()==true){
            String day = (String)iter.next();
            
            System.out.println("Day : " + day);                        
        }
    }
}

 

반응형

'Programming language > Java' 카테고리의 다른 글

[Java]Gmail SMTP를 이용한 메일 보내기  (28) 2018.11.16
[Java]==와 equals  (0) 2018.09.03
[Error]java.lang.UnsupportedClassVersionError  (0) 2018.08.24
[Java]ArrayList와 LinkedList(+Vector)  (0) 2018.08.24
[Java]Array와 List  (0) 2018.08.23
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.