Iterator, Listterator, Enumeration 모두 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스.
Enumeration 은 Iterator의 구버전
Listterator은 Iterator의 기능을 향상시킨것.
Iterator
컬렉션에 저장된 요소에 접근하는, 반환하는 iterator()를 정의하고있다.
컬렉션 클래스에 대해 iterator()를 호출하여 iterator를 얻은 다음 반복문을 통해 요소들을 읽어올 수 있다.
boolean hasNext()
이 메소드는 다음 요소가 존재하는지 여부를 확인합니다. 다음 요소가 있으면 `true`를 반환하고, 그렇지 않으면 `false`를 반환합니다.
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Object next()
이 메소드는 다음 요소를 반환합니다.
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
void remove()
이 메소드는 최근에 반환된 요소를 삭제합니다. 이 메소드는 반드시 `next()` 메소드 호출 이후에 호출되어야 합니다. 그렇지 않으면 `IllegalStateException`이 발생합니다.
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("banana")) {
iterator.remove();
}
}
System.out.println(list); // [apple]
Enumeration
Enumeration는 프레임웍이 만들어지기 이전에 사용하던 Iterator의 구버전
boolean hasMoreElements()
이 메소드는 다음 요소가 남아 있는지 여부를 확인합니다. 다음 요소가 있으면 `true`를 반환하고, 그렇지 않으면 `false`를 반환합니다.
Vector<String> vector = new Vector<>();
vector.add("apple");
vector.add("banana");
Enumeration<String> enumeration = vector.elements();
while (enumeration.hasMoreElements()) {
System.out.println(enumeration.nextElement());
}
Object nextElement()
이 메소드는 다음 요소를 반환합니다.
Vector<String> vector = new Vector<>();
vector.add("apple");
vector.add("banana");
Enumeration<String> enumeration = vector.elements();
while (enumeration.hasMoreElements()) {
String element = enumeration.nextElement();
System.out.println(element);
}
//apple banana
ListIterator
Listterator은 Iterator의 기능을 향상시킨것.
void add(Object o)
이 메소드는 현재 ListIterator가 가리키는 위치에 지정된 요소를 추가합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
iterator.add("orange");
System.out.println(list); // [orange, apple, banana]
boolean hasNext()
이 메소드는 ListIterator가 다음 요소를 가리킬 수 있는지 여부를 확인합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
boolean hasNext = iterator.hasNext();
System.out.println(hasNext); // true
boolean hasPrevious()
이 메소드는 ListIterator가 이전 요소를 가리킬 수 있는지 여부를 확인합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
boolean hasPrevious = iterator.hasPrevious();
System.out.println(hasPrevious); // false
Object next()
이 메소드는 ListIterator가 다음 요소를 반환하고, ListIterator를 그 다음 요소로 이동합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
String nextElement = iterator.next();
System.out.println(nextElement); // apple
Object previous()
이 메소드는 ListIterator가 이전 요소를 반환하고, ListIterator를 그 이전 요소로 이동합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
iterator.next(); // Move to next element
String previousElement = iterator.previous();
System.out.println(previousElement); // apple
int nextIndex()
이 메소드는 ListIterator가 반환할 다음 요소의 인덱스를 반환합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
int nextIndex = iterator.nextIndex();
System.out.println(nextIndex); // 0
int previoudIndex()
이 메소드는 ListIterator가 반환할 이전 요소의 인덱스를 반환합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
iterator.next(); // Move to next element
int previousIndex = iterator.previousIndex();
System.out.println(previousIndex); // -1
void remove()
이 메소드는 ListIterator가 마지막으로 반환한 요소를 리스트에서 제거합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
iterator.next(); // Move to next element
iterator.remove();
System.out.println(list); // [banana]
void set(Object o)
이 메소드는 ListIterator가 마지막으로 반환한 요소를 지정된 요소로 대체합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
ListIterator<String> iterator = list.listIterator();
iterator.next(); // Move to next element
iterator.set("orange");
System.out.println(list); // [orange, banana]
'JAVA' 카테고리의 다른 글
다양한 정렬 요구에 대응하다, Compartator와 Comparable 인터페이스 (0) | 2024.02.06 |
---|---|
배열을 다루는데 유용한 메서드, Arrays (0) | 2024.02.05 |
LIFO인 Stack스텍, FIFO인 Queue큐, PriorityQueue와 Deque (0) | 2024.02.05 |
모든 데이터가 서로 link한 형태로 구성된 LinkedList (0) | 2024.02.05 |
데이터의 저장순서가 유지되고 중복을 허용하는 ArrayList (0) | 2024.02.05 |