Iterator 인터페이스의 메서드로 자주 사용됩니다. Iterator에 추가적인 요소가 있을 때 가져오는 역할을 하는데요.
단순히 영어만 보면 조금 헷갈립니다. hasNext는 "뭔가 다음에 있으면 가져오는 것 같고", next는? "이것도 다음에 있으면 가져오는 것 아니야?"라고 생각할 수 있습니다.
결정적으로 다른 점은 반환 타입 입니다.
hasNext()는 boolean 타입으로 반환됩니다. 즉 "True or False"로 반환됩니다. 다음에 가져올 값이 있으면 True, 없으면 False입니다.
하지만 next()는 "매개변수 혹은 iterator 되는 타입"으로 반환됩니다. 즉 아무 타입으로 반환할 수 있습니다. Iterator에 입력된 값들이 String이면 String 값으로 가져오는 것입니다.
만약에 1,2,3,4,5 라는 숫자들이 저장되어 있는 배열을 Iterator 인터페이스로 가지고 올 때. hasNext()는 "True or False"를 나타내겠지만, next()는 "숫자 값"들을 가지고 옵니다.
hasNext()
next()