반응형
🙌 Iterator, ListIterator, Enumeration를 알아보기
🧐 Iterator란 ❓
컬렉션 프레임워크에서는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화하였다. Iterator인터페이스는 컬렉션에 저장된 요소에 접근하는 기능을 가졌다.
iterator() <- 이 친구는 Iterator를 반환함. 는 Collection인터페이스에 정의된 메서드이므로, Collection에 자손인 List와 Set에도 정의되어 있다. 하지만, Map인터페이스를 구현한 컬렉션에는 key와 value를 쌍으로 이뤄져있기 때문에, iterator()를 직접 호출할 수 없다. 그래서 호출하기 위해서는 keySet()이나 entrySet()과 같은 메서드를 통해서 사용해야된다.
여기서 Iterator도 List와 Set에 특징을 그대로 받는다. 그래서 List클래스들을 읽어올 때는 저장순서를 유지하면서 읽어오지만, Set은 저장 순서를 그대로 읽지 않는다.
🧐 Iterator는 어떤 method를 가지고 있을까❓
- boolean hasNext() : 읽어 올 요소가 남아있는지 확인하고, 있으면 true, 없으면 false를 반환한다.
- Object next(): 다음 요소를 읽어 온다. next()를 호출하기 전에, hasNext()를 사용하여 안전하게 사용하자.
- void remove(): next()로 읽어 온 요소를 삭제한다.
🤜예제
List list = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
🧐 ListIterator와 Enumberation은 뭘까❓
Enumeration은 Iterator의 구버젼, 이전 버젼으로 작성된 것들과의 호환을 위해 남겨두었다. 이거 말고 Iterator를 쓰자!!
ListIterator Iterator에 양방향 조회기능 추가 하지만, List를 구현한 구현체들만 사용가능!!
🧐 ListIterator의 method만 알아보자❗️(Iterator와 다른 것들만!)
- boolean hasPrevious(): 읽어 올 이전 요소가 남아있는지 확인한다. 있으면 true, 없으면 false
- Object previous(): 이전 요소를 읽어 오기. 이것도 호출하기 전에 hasPrevious()를 사용하면 안전하게 사용할 수 있다.
- int nextIndex(): 다음 요소의 index를 반환한다.
- int previousIndex(): 이전 요소의 index를 반환한다.
🤜 역방향으로 읽어오기 예제
List list = new ArrayList();
ListIterator it = list.listIterator();
while(it.hasPrevious()){
System.out.println(it.previous());
}
Reference
Java의 정석 2편 - 남궁성
반응형
'✍🏻study > 👐java' 카테고리의 다른 글
Java Collection Framework 공부하기 Part 6. (0) | 2022.03.02 |
---|---|
Java Collection Framework 공부하기 Part 5. (0) | 2022.03.02 |
Java Collection Framework 공부하기 Part 2. (0) | 2022.03.02 |
Java Collection Framework 공부하기 Part 4. (0) | 2022.03.02 |
Java Collection Framework 공부하기 Part 1 (0) | 2022.03.02 |