2012-03-06 2 views
4

과제에서 대답해야하는 다음 질문을 이해하려고합니다. 그것은 무한한 반복자에 대해 질문하고 있습니다. 어디에 유용할까요? 나는 반복자가 같은 컬렉션을 통과하는 데 사용됩니다 생각 : itr무한 반복자 란 무엇입니까? 왜 그것을 사용합니까?

Iterator itr = ArrayList.iterator(); 
while (itr.hasNext()) 
{ 
    System.out.println(itr.next()); 
} 

그것이 한 다른 작업을 반복의 중간에 이루어지지해야하기 때문에, 끝났어, 컬렉션의 끝에 도달한다. 그렇다면 무한한 반복자를 사용하는 이유는 무엇입니까?

+2

http://stackoverflow.com/questions/2622591/is -an-infinite-iterator-bad-design 이 질문에 대한 답변입니다. – Nik

+1

아, 여기서 "무한 반복자"의 해석이 무엇인지 확실하지 않습니다. 케이스가 개방형 범위에서 반복해야한다면 @NikunjChauhan이 맞습니다. Google 콜렉션 라이브러리, PHP 및 기타 여러 언어와 같이 컬렉션에 대한 무한 반복자를 의미하는 경우 아래를 참조하십시오! –

답변

6

무한 반복기는 끝 요소에 도달 할 때 되감기를 제외하고 위 코드에서 수행하는 것과 정확히 동일합니다.

어쩌면이 예제는 유용하게 사용할 수있는 방법을 설명하는 데 도움이됩니다

Let l = [1,2,3,4,5,6,7,8] 

int i = 0; 
InfiniteIterator itr = l.infiniteIterator(); 
while(itr.hasNext()) { 
    if(i % 2 == 0) { 
     itr.remove(); 
    } 
    i++; 
} 

각 반복에서 l의 주 :

[1,2,3,4,5,6,7,8] # i = 0, e = 1 
[2,3,4,5,6,7,8] # i = 1, e = 2 
[2,3,4,5,6,7,8] # i = 2, e = 3 
[2,4,5,6,7,8] # i = 3, e = 4 
[2,4,5,6,7,8] # i = 4, e = 5 
[2,4,6,7,8] # i = 5, e = 6 
[2,4,6,7,8] # i = 6, e = 7 
[2,4,6,8] # i = 7, e = 8 
[2,4,6,8] # i = 8, e = 2 
[4,6,8] # i = 9, e = 4 
[4,6,8] # i = 10, e = 6 
[4,8] # i = 11, e = 8 
[4,8] # i = 12, e = 4 
[8] # i = 13, e = 8 
[8] # i = 14, e = 8 
[] # while loop exits 
+0

좋은 예입니다. – AHungerArtist

관련 문제