2013-06-28 28 views
17

LinkedHashSetをソートすることができるかどうかは疑問です。私はちょうどそれがリストにキャストすることができないというエラーがスローされます声明しかし LinkedHashSetをソートする

Collections.sort((List<Comparable> paragraph);

を、試してみました。これを行う方法はありますか、別のデータ構造を使用すべきですか?

+6

代わりに 'TreeSet'を使用してください。 –

+1

SortedSet – Tala

+1

代わりにsortedSetを使用することができます。数式ビューで 'set'を実行すると順序がありません。 – nachokk

答えて

25

比較(例:ソートされた注文)に基づいてご注文される場合は、TreeSetまたはConcurrentSkipListSetなどのSortedSetを使用してください。

LinkedHashSetは、に基づいて注文を受け入れます。

あなたは本当にあなたが実際に(質問は私たちにparagraphの種類を教えてくれませんが私はそれがStringであると仮定します)

List<String> listParagraph = new ArrayList<String>(paragraph); 
Collections.sort(listParagraph) 
Listを構築することにより、一覧にLHSを変換することができ Collections.sortを使用したい場合

でも、これはおそらく最善の方法ではありません。

4

Collections.sortSetでは機能しません。Listでのみ有効です。既にSetにあるデータを並べ替える必要がある場合は、最初にListに追加することをおすすめします。

1

TreeSetにLinkedHashSetオブジェクト(linkedHashSet)を追加してソートします。

TreeSet<T> treeSet = new TreeSet<t>(); 
treeSet.addAll(linkedHashSet); 

treeSetはソートされたセットです。

これらのT型を(Comparatorインターフェイスを実装することによって)比較可能にする必要があることに注意してください。

関連する問題