1

特定のインデックス名に基づいて Set データを並べ替える必要があります。次のデータがあります。

txt_4: somevalue
txt_2: somevalue
txt_1: somevalue
txt_0: somevalue
txt_3: somevalue

このデータを並べ替えるにはどうすればよいですか? ありがとう。

アップデート:

ソート後の予想データ:

txt_0: somevalue
txt_1: somevalue
txt_2: somevalue
txt_3: somevalue
txt_4: somevalue
4

4 に答える 4

10

そのためにTreeSetオブジェクトを 使用します。

TreeSet 要素は、使用されるコンストラクターに応じて、自然な順序付けを使用するか、セットの作成時に提供される Comparator によって順序付けられます。

     Set<String> treeSet = new TreeSet<String>();
     treeSet.add("txt_4: somevalue");
     treeSet.add("txt_1: somevalue");
     treeSet.add("txt_0: somevalue");
     treeSet.add("txt_3: somevalue");
     System.out.println(treeSet);
于 2013-09-17T09:03:06.870 に答える
2

コンパレータを使用した完璧なソリューション: Alphanum アルゴリズム

数字を使って文字列を並べ替える方法は、ソフトウェアとは異なります。ほとんどのソート アルゴリズムは ASCII 値を比較するため、人間の論理と矛盾する順序が生成されます。これを修正する方法は次のとおりです。参照: http://www.davekoelle.com/alphanum.html

Davekoelle AlphanumComparator.java : http://www.davekoelle.com/files/AlphanumComparator.java

別の代替手段se.sawano alphanumeric-comparatorです: https://github.com/sawano/alphanumeric-comparator

AlphanumComparator

于 2013-09-17T09:05:54.770 に答える
1

Set の順序は定義されていません。セットをソートすることはできません。

できることは、セットの要素をリストなどの順序を定義するデータ構造に追加し、代わりに並べ替えることです。

別の方法として、要素をソートされた順序で保持しているセット実装を使用することもできます。これらには、TreeSet と ConcurrentSkipListSet が含まれます。ただし、これらの実装は現在使用しているものよりも複雑であり、プログラムの残りの部分が遅くなる可能性があることに注意してください。

于 2013-09-17T09:12:11.763 に答える
0

それがTreeSetの目的ではありませんか?

于 2013-09-17T09:05:12.003 に答える