스프링 공부하다가 빨간색 밑줄친 부분이 계속 이해가 가지 않았다.
C++에서도 했듯이 iterator(반복자)는 상이한 자료구조 형태에서 저장한 객체들에 접근하기 위하여 표준화한 방법(자바에서는 인터페이스)이다.
그런데 C++ STL iterator는 객체가 쭉 있으면 커서 처음이 객체 처음을 가르키고 여기서부터 시작하여 쭉 가는 형태였다.
(대충 이런식)
그런데 자바공부하면서 C++ STL에서의 반복자와 동일한 커서위치로 생각하니까 말이 안되는 상황이 발생했다.
STL에서의 반복자 시작 위치는 첫번째 요소를 가르키지만 자바에서는 첫번째 요소가 아닌 시작 위치 바로 전 위치를 가르킨다는 것이다.
그러다보니 .hasMoreElements()로 다음 원소가 있는지 확인해도 이제서야 커서가 시작위치로 이동한다. 이때 커서는 바뀌지않고 있는지만 확인한 다음 있다면 .nextElement()로 현재 커서의 다음 요소를 반환하고 커서를 다음으로 바꾼다.