単一の変数の名前と番号の両方に存在している場合は、Javaでのソート実行する方法

Vatsalラーフル:

私はJavaの春ブーツを使用していますので、私は、ソートのことをやっていると私は、現在のソート順のストリームを使用しています

ソートコードは次のとおりです -

projectResponse.setDetails(v.stream()
                    .sorted(Comparator.comparing(StateResponse::getState)
                            .thenComparing(Comparator.comparing(NameResponse::getName)))
                    .collect(Collectors.toList()));

名前で最初の状態によると、その後ソートします。

「名前-98」、「名前-99」、「名前-100」そう、99まで正しくソートが、100が来るとき、それは最初にソートされた番号で、その後、ソート、ソートされてから、正しいです:私の名前は次のように値の何かを持っていますNOは999を横断して、正しく1000,1001から来るということだソートする時期100101102と、この状況は再び来ます。それを克服するための最善の解決策は何ですか?

jspcal:

それは同時に、アルファベット順にテキストをソートしながら、番号順に数字を並べ替えカスタムコンパレータを使用すると便利です。これは、しばしば、「自然のソート」と呼ばれています。:ここではそれを行う一つの実施だhttp://www.davekoelle.com/alphanum.htmlが

あなたのストリーム操作でそれを使用するには:

thenComparing(NameResponse::getName, new AlphanumComparator())

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=211983&siteId=1