22

LinkedHashSet を並べ替えることができるかどうか疑問に思っています。発言してみた

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

ただし、リストにキャストできないというエラーがスローされるだけです。これを行う方法はありますか、それとも別のデータ構造を使用する必要がありますか?

4

4 に答える 4

31

比較に基づく順序付け (ソート順など)が必要な場合は、 SortedSetas などをTreeSet使用する必要があります。ConcurrentSkipListSet

Aは、広告掲載オーダーLinkedHashSetに基づいて順序を維持します。

本当に使用したい場合はCollections.sort、実際に a を構築することで LHS を List に変換できますList(ただし、質問では の型がわからないparagraphので、 であると仮定しますString)

List<String> listParagraph = new ArrayList<String>(paragraph);
Collections.sort(listParagraph)

しかし、それはおそらく最良のアプローチではありません。

于 2013-06-28T18:01:47.690 に答える
4

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

于 2013-06-28T18:00:04.700 に答える
2

LinkedHashSet オブジェクト (linkedHashSet) を TreeSet に追加すると、ソートされます。

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

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

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

于 2013-06-28T18:09:06.740 に答える
1

はい、できます。Java 8 は私たちの生活を楽にしてくれました :)

リンクリストの作成(私には簡単に見えます。LinkedHashSetに直接挿入できます)

LinkedList<String> lList = new LinkedList<String>();
lList.add("Ravi");
lList.add("Vijay");
lList.add("Ravi");
lList.add("Ajay");
lList.add(null);

LinkedHashSet<String> lHashSet = new LinkedHashSet<>();
lHashSet.addAll(lList);

今並べましょう

lHashSet.stream().sorted((String s1,String s2)->{       
    return s1.compareTo(s2);
});

//now print it
System.out.println("----");
lHashSet.forEach(action->{
   System.out.println(action);
});
System.out.println("----");

出力-

----
Ravi
Vijay
Ajay
null
----

ハッピーコーディング:)

于 2018-12-21T18:04:35.333 に答える