1

int の arraylist を昇順に並べ替えましたが、セットにコピーすると要素が並べ替えられなくなりました。私はこれを使用しています:

HashSet<Integer> set = new HashSet<Integer>(sortedArray);  

どうしてそうなの?

4

4 に答える 4

4

LinkedHashSet順番を守ります。は、を介した外部順序または自然順序TreeSetのいずれかに基づいて並べ替えます。ComparatorComparable

a の一般的なポイントはSet、順序は関係ないということです。ハッシュは、要素を可能な限りランダムな順序に並べることを目的としています。LinkedHashSet要素への参照間のリンクリストを維持するため、順序を維持できます。

BitSet(これは ではありませんSet) は、より効率的なデータ構造を提供する場合と提供しない場合があります。

于 2013-05-12T00:48:25.343 に答える
0

HashSet は順序を並べ替えたり維持したりしません。API は次のように通知します。

時間が経っても順序が一定であることを保証するものではありません。

TreeSet などの別のタイプのセットの使用を検討してください。

于 2013-05-12T00:47:33.380 に答える