해결된 질문
작성
·
185
0
안녕하세요.iterator관련 해서 간단하게 질문 드립니다.
hasNext() 와 next() 함수 모두 다음에 있는 요소에 관한 함수지 않습니까?
코드를 작성하다가 문득 든 생각인데
이터레이터가 위치한 인덱스의 다음 인덱스를 뜻한다면 첫번째 원소는 어떻게 다룰 수 있는걸까?
라는 의문이 들어서 질문글을 작성하게 되었습니다.
1)
여기서 다음의 뜻이 이터레이터가 위치한 인덱스를 말하는것인가요?
아니면 이터레이터가 위치한 인덱스의 다음 인덱스를 말하는것인가요?
물론 전자여야 모든 뜻이 말이 되고 이해가 가기 때문에 전자겠지만
자바 사이트에서 함수 정의를 보면 next라고 적혀 있어서 혹시나 해서 질문드립니다.
전자가 맞다면 왜 하필 햇갈리게 next라고 했을까요?
2)
그리고 hasNext가 이후에 요소가 있는지를 체크하는 함수라면 이터레이터가 arrayList의 마지막 인덱스에 위치할땐 false값을 리턴해서 마지막번째 원소를 다룰 수 없게 되지 않나요?
혹시 arrayList도 마지막 원소에 c의 문자열 처럼 마지막에 null값이 항상 있기 때문에 마지막 원소까지 hasNext함수가 다룰 수 있는건지 궁금합니다.
다음이라는 단어 때문에 간단하던것들이 갑자기 모두 햇갈리네요.
답변 1
2
JavaDoc 에 보면 다음과 같이 cursor의 위치를 표현하고 있습니다. 따라서 next()를 호출하면 첫번째 element가 반환됩니다.
다음은 Iterator interface 하위의 ListIterator 부분의 문서이니 참고가 되실듯 합니다.
https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/ListIterator.html