2017-01-11 4 views
7

나는이 같은 일부 foreach 루프를 가지고 가정하면 감지? 현재 요소는 마지막 요소인지 확인하는 방법에는 빌드가 없습니다마지막 foreach 루프 반복

+5

아니요, Set 인터페이스에는 이러한 메소드가 없습니다. 그 추상화는 모든 요소가 고유 한 Collection이라는 것만 제외하고는 순서를 의미하지 않습니다. – duffymo

+0

카운터가 없으면 단순히 java에서 할 수 없습니다. – abbath

+0

pls는 현재 요소가 마지막 요소임을 알면 무엇을하고 싶은지 말합니다. 'HashSet'에있는 각각은 for order를 유지하지 않는다는 것을 명심하십시오. – Kent

답변

6

는, 당신은 명시 적으로 반복자 또는 INT 카운터를 사용하도록 루프를 변경해야합니다 How does the Java 'for each' loop work?

를보십시오.

+0

반복자는 정말 나를 도울 수 있습니다! 감사. – mhery

0

(IT, 나는 몇 가지 질문과 같이 여기에서 찾을하지 않은 중복 된 질문이 있다면 죄송합니다). 게다가 당신은 HashSet을 사용하고 있으며 반환 주문을 보장하지 않습니다. 예를 들어 확인하고 싶을 때도 있습니다. 인덱스가 i이면 마지막 요소는 항상 다른 요소가 될 수 있습니다. 없다

0

Set은 그 안에있는 항목의 순서를 보장하지 않습니다. Set을 한 번 반복하고 "마지막 항목"으로 "abc"를 검색하고 다음에 "hij"가 Set의 "마지막 항목"이라는 것을 알게 될 것입니다.

당신이 주문을 염려하지 않고 현재의 순간에 Set을 관찰 할 때 임의의 "마지막 항목"이 무엇인지 알고 싶다면이 작업을 수행 할 방법이 없습니다. 카운터를 사용해야합니다.

4

다른 답변이 주어진 질문에 대해이 솔루션을 추가하기 만하면 충분합니다.

Set<String> names = new HashSet<>(); 

    //some code 
    int i = 0; 

for (String name: names) { 
    if(i++ == names.size() - 1){ 
     // Last iteration 
    } 
    //some code 

} 
+0

감사. 마지막 반복을 확인하는 각 루프에 대한 좋은 솔루션. iterator를 사용하여 for 루프를 사용하는 것과 매우 비슷합니다. 아직도, 좋은 해결책! – NiallMitch14