[Java] iterator
iterator
iterator는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 하였는데 그 중 하나가 iterator입니다. 쉽게 말하면 컬렉션으로부터 정보를 얻어내는 인터페이스입니다. 또한, iterator는 인터페이스이며 그 구성은 아래와 같습니다.
1 | public interface Iterator( |
- boolean hasNext() : 읽어 올 요소가 남아있는지 확인하는 메소드로 읽어 올 요소가 남아 있으면 true, 없으면 false를 반환합니다.
- Object next() : 읽어 올 요소가 있으면 다음 요소를 가져옵니다.
- void remove() : next()로 읽어 온 요소를 삭제합니다. 그러므로 next()를 호출한 다음에 remove()를 호출해야 합니다.
그렇다면 우리가 사용하는 컬렉션 프레임워크에서는 어떻게 사용하면 될까요??
이 질문에 대한 답은 간단합니다. 예를 들어, List, set과 같은 인터페이스를 구현하는 컬렉션은 iterator()가 컬렉션의 특징에 맞게 설계가 되어 있기 때문에 쉽게 사용할 수 있습니다.
Iterator와 list.size() 사용법
- Iterator 사용법
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
- list.size 사용법
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
결론
iteraotr는 자동으로 index를 관리해주기 때문에 사용함에 있어서 편리함을 가져다 주지만, Iterator는 객체를 만들어서 사용하기 때문에 list의 size를 가져와서 계산하는 것보다 속도가 느립니다. 그러므로, list의 size를 받아와서 사용하는 것이 더 좋습니다. (속도면에서 빠릅니다.)