자바와 C++에서의 iterator 커서 위치

준혁·2023년 9월 1일
1
post-thumbnail

스프링 공부하다가 빨간색 밑줄친 부분이 계속 이해가 가지 않았다.

C++에서도 했듯이 iterator(반복자)는 상이한 자료구조 형태에서 저장한 객체들에 접근하기 위하여 표준화한 방법(자바에서는 인터페이스)이다.

그런데 C++ STL iterator는 객체가 쭉 있으면 커서 처음이 객체 처음을 가르키고 여기서부터 시작하여 쭉 가는 형태였다.

대충 이런식 (대충 이런식)

그런데 자바공부하면서 C++ STL에서의 반복자와 동일한 커서위치로 생각하니까 말이 안되는 상황이 발생했다.


STL에서의 반복자 시작 위치는 첫번째 요소를 가르키지만 자바에서는 첫번째 요소가 아닌 시작 위치 바로 전 위치를 가르킨다는 것이다.

그러다보니 .hasMoreElements()로 다음 원소가 있는지 확인해도 이제서야 커서가 시작위치로 이동한다. 이때 커서는 바뀌지않고 있는지만 확인한 다음 있다면 .nextElement()로 현재 커서의 다음 요소를 반환하고 커서를 다음으로 바꾼다.

profile
멍청한 나를 위해 쉽게 풀어쓴 개발 기술블로그

0개의 댓글