5

挿入されたのと同じ順序で要素を取得する必要があるlinkedhashsetがあります。取得するには、要素を正確な挿入順序で取得しています。

インデックスで取得するためにlinkedHashsetをListに変換しますが、リストに変換すると要素がシャッフルされて順序が変更されるのではないかと心配しています

  LinkedHashSet<String> personDetails = new LinkedHashSet<String>();
  //persondetails => John, kennedy, Female
  List<String> details = new ArrayList<>(personDetails);
  String firstName = details.get(0);
  String lastName = details.get(1);
  String gender = details.get(2);

リストは順序を保持しないため、リストに変換することは、最初に挿入順序でそれらを取得するという私の主な目的を放棄することです。

ここで別の方法または私の間違いを教えてください。

4

1 に答える 1

5

まず、挿入順序に従って取得するために LinkedHashSet を List に変換する必要はありません。Iterator を使用して Set を反復処理できます。

例えば ​​:

Iterator<String> iter = personDetails.iterator();
String firstName = null;
if (iter.hasNext())
    firstName = iter.next();
String lastName = null;
if (iter.hasNext())
    lastName = iter.next();
String gender = null;
if (iter.hasNext())
    gender = iter.next();

ArrayList次に、ソースCollcetionを入力として受け入れるコンストラクターでを作成すると、Collectionに要素を追加するために が反復処理されArrayListます。反復順序は の反復子の実装に依存し、Collectionの場合LinkedHashSet、反復順序は挿入の順序です。したがって、List広告掲載順は保持されます。

これは Javadoc で確認できます。

java.util.ArrayList.ArrayList(コレクション c)

コレクションの iterator によって返される順序で、指定されたコレクションの要素を含むリストを構築します。

于 2016-04-08T14:43:24.790 に答える