2017-02-14 6 views
1
Set<Integer> set=new HashSet<Integer>(); 
    set.add(41); 
    set.add(52); 
    set.add(33); 

    Iterator<Integer> iterate=set.iterator(); 
    System.out.println(iterate.next()); 
    System.out.println(iterate.next()); 
    System.out.println(iterate.next()); 

O/P-> 33 52 41 に代わりに私が41、52および33Javaでセット(セレン)を使用して、私は下から一番上に値を取得していますが - の代わりにトップの下部

を取得する必要があります

Plzがこのように印刷している理由を説明してください。

+2

通常、セットは順序付けられていないコレクションです。 LinkedHashSetを参照してください。 – synchronizer

答えて

0

LinkedHashSetを使用して、Setに挿入オーダーを保持する必要があります。
LinkedHashSetは、挿入順序を保持するように設計されています。 JavaDocsから:

ハッシュテーブルと 予測可能な繰り返し順序を持つSetインタフェースのリンクリストの実装です。この実装は、 のすべてのエントリで実行される二重リンクリストを維持するという点で、HashSet とは異なります。このリンクされたリストは、要素がセット(挿入順序)に挿入された の順序である反復順序を定義します。 要素が をセットに再挿入した場合、挿入順序には影響しません。 (s.add場合、要素eが集合sに再挿入される(e)はs.contains(e)は直前 呼び出しにtrueを返すだろうというとき が呼び出されます。)

が親切に質問Ordering of elements in Java HashSetを参照してください。注文についてはHashSetで知りたいJavaDocs:

からこのクラスは、ハッシュテーブル (実際にはHashMapのインスタンス)をSetインタフェースを実装します。これは、セットの反復順序の については保証しません。 特に、 が時間の経過とともに一定のままであることを保証するものではありません。このクラスはnull 要素を許可します。

関連する問題