[java] iterator

심심이·2024년 3월 3일
0

java

목록 보기
41/46
  • -Collection에서 저장된 요소들을 읽어오는 방법을 표준화한 것. 컬렉션이 달라져도(list-> set) 저장된 요소를 가져올 수 있다.
  • -Collection에서 iterator()를 호출해서 iterator를 구현한 객체를 얻어서 사용한다.

-Collection 인터페이스에 iterator()메소드가 정의되어 있기 때문에 List와 set은 iterator()를 가지고 있다.


Collection list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고친다.
//Collection 부모타입으로 자식타입을 받으면 ArrayList가 set으로 변경되어도 코드 고칠필요 없이 작동 가능.


Iterator it = list.iterator(); // iterator 객체를 반환한다.

while(it.hasNext()) { // 읽어올 요소가 있는지 확인하는 boolean(있으면 true)
	System.out.println(it.next()); // 요소를 읽어온다.
}

/*
while이 끝나면 더이상 읽어올 것이 없기 때문에 밑에 while문을 한번 더 써도 실행되지 않는다(false로 바로 빠져나옴) 
iterator를 다 쓰고 나면(한번 다 읽어오고 나면) 다시ㅣ 
it = list.iterator();를 써야 한다.
★ iterator는 1회용이라 다 쓰고 나면 다시 얻어와야 한다. ★

*/

collection framework를 사용하다 보면 set을 list로 바꿔 쓸 때가 있는데, 그럴 때 iterator를 사용하면 코드를 변경할 필요가 없으므로 효율적이다.

예제

    public static void main(String[] args) {
        Collection c = new TreeSet(); // 다른 컬렉션으로 변경할 때는 이 부분만 고친다.
//        Collection c = new HashSet();
        // c의 경우 set, list 둘다 들어올 수 있어서 유연한 코드로 사용이 가능하다.
        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);
        }
        //Map은 iterator()가 없다. keySet(), entrySet(), values()를 호출해야 한다. 
    }

profile
개발하는 심심이

0개의 댓글

관련 채용 정보