int の arraylist を昇順に並べ替えましたが、セットにコピーすると要素が並べ替えられなくなりました。私はこれを使用しています:
HashSet<Integer> set = new HashSet<Integer>(sortedArray);
どうしてそうなの?
LinkedHashSet
順番を守ります。は、を介した外部順序または自然順序TreeSet
のいずれかに基づいて並べ替えます。Comparator
Comparable
a の一般的なポイントはSet
、順序は関係ないということです。ハッシュは、要素を可能な限りランダムな順序に並べることを目的としています。LinkedHashSet
要素への参照間のリンクリストを維持するため、順序を維持できます。
BitSet
(これは ではありませんSet
) は、より効率的なデータ構造を提供する場合と提供しない場合があります。
HashSet は順序を並べ替えたり維持したりしません。API は次のように通知します。
時間が経っても順序が一定であることを保証するものではありません。
TreeSet などの別のタイプのセットの使用を検討してください。