配列リストからハッシュセットに一意の要素を取得していますが、それ自体でソートされています.しかし、データをソートされた順序にしない必要があります.どうすればよいですか?
2 に答える
ソートされるHashSet
javadocHashSet
で明示的に述べられているように、aの項目は特定の順序ではありません。
セットの反復順序については保証されません。特に、順序が時間の経過とともに一定に保たれることを保証するものではありません。
おそらく、アイテムを追加したのとは異なる順序でアイテムが「再配置」されており、これは望ましくないということを意味しているのかもしれません。
その場合は、LinkedHashSet
の代わりに使用してHashSet
ください。要素を挿入順序で維持します。
Set<T> unique = new LinkedHashSet<T>(arrayList);
または、要素の実装に基づいた自動順序付けを希望する場合、Comparable#compareTo()
またはカスタムを提供したい場合は、代わりにComparator
を使用してください。TreeSet
Set<T> uniqueAndSorted = new TreeSet<T>(arrayList);
参照:
「ソートされていないデータが欲しい」とはどういう意味ですか? リストに存在するのと同じ順序が必要だと言うつもりですか? その場合は、LinkedHashSet を作成し、arraylist からエントリを追加できます。
例: ArrayList list = new ArrayList(); LinkedHashSet セット = 新しい LinkedHashSet(); for (文字列 temp : リスト) { set.add(temp);
}
これにより、要素が配列リストに存在する順序が同じになります。