CF_06_Iterator, ListIterator, Enumeration 인터페이스

charl hi·2021년 9월 17일
0

JAVA_CF

목록 보기
6/12

Iterator, ListIterator, Enumeration

  • 컬렉션에 저장된 데이터를 접근(확인, 읽기)하는 데 사용되는 인터페이스


Enumeration 인터페이스

  • Iterator의 구버전

메소드

  1. boolean hasMoreElements()
  • 읽어올 요소가 남아있는지 확인, 있으면 true
  1. Object nextElement()
  • 다음 요소 읽기

  • hasMoreElements()로 먼저 확인하고 -> nextElement()

✨✨사용법 : CF_12에 Ex11_19 확인



ListIterator 인터페이스

  • Iterator의 접근성으 향상시킨 것(단방향 -> 양방향)

  • previous() : 이전요소 읽기



✨✨Iterator 인터페이스

  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것
    -> List/Set/Map 마다 각자 읽어오는 방법이 다른데 이걸 표준화!!
    -> 도중에 컬렉션을 바꿔도 코드를 일일이 바꾸지 않아도 된다!!

  • ✨컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용

    • iterator() : Collection 인터페이스의 메소드이며, List & Set 인터페이스는 그 자손이므로,
    • ✨✨List 구현 클래스(ArrayList..), Set 구현 클래스(TreeSet, HashSet...) 등이 iterator()를 사용할 수 있고, Iterator를 구현한 객체를 얻어서 사용한다!!!!
    List list = new ArrayList();	//다른 컬렉션으로 변경할 땐 우항만 고치면 됨!!!
    Iterator it = list.iterator();	//Iterator 객체를 반환
    //
    while(it.hasNext()) {	//확인
    	System.out.println(it.next());	//읽어오기
    }

메소드

  1. boolean hasNext()
  • 컬렉션에 읽어올 요소가 남아있는지 확인, 있으면 true
  1. Object next()
  • 컬렉션의 다음 요소 읽기

  • ✨✨hasNext()로 먼저 확인하고 -> next()


ex11_05

import java.util.*;

public class Ex11_05 {

	public static void main(String[] args) {
		Collection c = new HashSet();
		//***좌항에 Collectoin으로(더높은조상) 하면 우항에 어떤 자손이든 가능
		//아래의 코드를 바꿀 필요없다
		c.add("1");
		c.add("2");
		c.add("3");
		c.add("4");
		c.add("5");
		
		Iterator it = c.iterator();//****
		
		while(it.hasNext()) {//요소 있는지 확인
			Object obj = it.next();
			System.out.println(obj);
		}//끝까지 읽음
		//iterator()는 1회용이라 다쓰고나면 다시 얻어와야 한다.
		
		it = c.iterator();//****
		
		while(it.hasNext()) {//요소 있는지 확인
			Object obj = it.next();
			System.out.println(obj);
		}//끝까지 읽음
		
		final int SIZE = list.size();
		for(int i=0; i<SIZE; i++) {
			Object obj = list.get(i);
			System.out.println(obj);
		}//이렇게 가능은 하나, 위에 컬렉션을 바꾸면 사용하지 못한다.
		
		

	}

}

1
2
3
4
5
1
2
3
4
5


Map 과 Iterator

  • Map에는 iterator()가 없다 -> ✨keySet(), entrySet(), values()를 호출해야 한다!!
  • entry = key & value 한 쌍
Map map = new HashMap();
..
Iterator it = map.entrySet().iterator();

마지막 줄은 다음 두 줄을 한줄로 만든 것!

Set eSet = map.entrySet();
Iterator it = eSet.iterator();



Ref

0개의 댓글