2012-06-13 4 views
2

데이터 액세스 계층의 메서드 모음에서 반복자를 반환하는 것이 더 바람직 할 때 이점이 있습니까?Collection 대신 Iterator를 반환하는 경우

나는 어딘가에서 그것을 보았고, 왜 기억하지 못한다.

PS : 반복자 컬렉션보다 훨씬 간단한 인터페이스를 가지고

+0

반복자를 사용하여 '런타임 페치'를 수행하는 방법을 잘 모르겠습니다. 반복자는 콜렉션을 반복 할 수있는 객체이며, 데이터가 이미 반복자가 볼 수없는 콜렉션에없는 경우입니다. –

+0

내가 발견 한이 링크와 비슷한 것 (그러나 베스트 프랙티스에 대한 업데이트 또는 협의는 아닙니다) http://www.techrepublic.com/article/deciding-between-iterators-and-lists-for-returned-values-in- java/1046675 – Whimusical

답변

2

A JDBC ResultSet은 기본적으로 이와 비슷하지만 다른 인터페이스입니다. 그리고 그렇습니다. 그 이유는 거대한 데이터 세트를 먼저 메모리로 완전히 가져 오지 않고도 처리 할 수 ​​있기 때문입니다.

또한 일부 다른 언어 (C++ 및 Python, I Belive)는 반복적으로 데이터 항목으로 반복자를 사용합니다. Java의 iterator는 Collection보다 유용성이 떨어지는 중요한 기능이 없기 때문에 일반적으로 완료되지 않으므로 피해야합니다 (즉, 이유가있는 경우 제외). 즉, 복사하거나 위치를 재설정 할 수 없습니다.

2

을 완료, 사물에게 방법을 수행하는 사용자 지정 래퍼를 구현하기 쉽게해야되지 않은 상태에서 어쩌면 일부 데이터의 실시간 인출과 관련이있다 너는 그들을 원해.

언급 한대로 next() 메서드가 데이터를 사용할 수있을 때까지 차단되도록 구현할 수 있습니다. 또한 remove() 작업을 구현하지 않으므로 호출자가 기본 콜렉션을 변경할 수 없습니다.

관련 문제