2017-01-11 13 views
7

私はこのようないくつかのforeachループを持っていると仮定すると検出?最後のforeachループの反復

(それは重複質問だ場合は申し訳ありませんが、私はここに、このようないくつかの質問が見つかりませんでした)

+5

いいえ、Setインターフェイスにこのようなメソッドはありません。その抽象化は順序を意味するものではなく、すべての要素が一意であるコレクションであることを意味します。 – duffymo

+0

カウンターなしでは、あなたは単にjavaでそれを行うことはできません。 – abbath

+0

pls tell、現在の要素が最後であることを知っていれば、何をしたいですか? 'HashSet'のそれぞれがその順序を保持しないことを覚えておいてください。 – Kent

答えて

6

How does the Java 'for each' loop work?

を見てみましょうあなたが明示的にイテレータまたはint型のカウンタを使用するようにループを変更する必要があり、そこではありません。

+0

イテレータは本当に私を助けることができました!ありがとう。 – mhery

0

現在の要素がまた、最後の要素であるかどうかを確認する方法には、ビルドはありません。それ以外に返品の順序を保証していないHashSetを使用しています。たとえそれを確認したいと思っても。インデックスがiの場合、最後の要素は常に異なる要素になります。

0

Setは、その中の項目の順序を保証しません。 Setを1回ループし、「最後のアイテム」として「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

ありがとうございます。各ループが最後の反復をチェックするための良い解決策。これはイテレータでforループを使用するのと非常によく似ていますが、それでも、素晴らしいソリューション! – NiallMitch14

関連する問題