개발일지/Java

Java Iterator

E-room 2022. 9. 17. 16:43
728x90

Iterator

Collection에 저장된 요소들을 순차적으로 읽어오는 역할 (List, Set)

 

메서드 설명
hasNext() 읽어올 객체가 남아 있으면 true를 리턴하고, 없으면 false를 리턴합니다.
next() 컬렉션에서 하나의 객체를 읽어옵니다. 이 때, next()를 호출하기 전에 hasNext()를 통해 읽어올 다음 요소가 있는지 먼저 확인해야 합니다.
remove() next()를 통해 읽어온 객체를 삭제합니다. next()를 호출한 다음에 remove()를 호출해야 합니다.

 

List에서 String 객체 반복

ArrayList<String> list = ...;
Iterator<String> iterator = list.iterator();

while(iterator.hasNext()) {     // 읽어올 다음 객체가 있다면 
	String str = iterator.next(); // next()를 통해 다음 객체를 읽어옵니다. 
	...
}

 

Iterator를 사용하지 않더라도 for-each로 반복할 수 있음

ArrayList<String> list = ...;
for(String str : list) {
	...
}

 

next() 메서드로 가져온 객체를 컬렉션에서 실제로 제거하려면 remove()를 사용한다.

ArrayList<Integer> arr = new ArrayList<>();
for (int i = 0; i < 5; i++) { // 0,1,2,3,4 추가
    arr.add(i);
}

Iterator<Integer> iterator = arr.iterator();

while (iterator.hasNext()) {
    System.out.print(iterator.next()); // 출력
    iterator.remove(); // 제거
}
System.out.println()
System.out.println(arr);
// 출력
01234
[] // 실제로 값이 삭제됨
728x90