3

ハイフン付きの文字列セットのセットがあります。ロケールを考慮してソートしたい。

List<String> words = Arrays.asList("App - Small", "Apple", "App - Big");

Collator collator = Collator.getInstance(new Locale("en"));

// Sort Method 1            
Collections.sort(words, String.CASE_INSENSITIVE_ORDER);
System.out.println(words.toString());

// Sort Method 2        
collator.setStrength(Collator.PRIMARY);
Collections.sort(words, collator);
System.out.println(words.toString());

結果

String.CASE_INSENSITIVE_ORDER

[App - Big, App - Small, Apple]  

Collator.PRIMARY

[App - Big, Apple, App - Small]

Collat​​or.PRIMARY は大文字と小文字を区別しない並べ替えを行うことになっていますが、上記の 2 つの方法を使用した順序には違いがあります。ハイフンで機能するロケールベースの大文字と小文字を区別しない並べ替え順序を実現するにはどうすればよいですか。

[アプリ - 大、アプリ - 小、Apple] - 予想される並べ替え順序

4

2 に答える 2

2

大文字と小文字の区別の問題はありません。コレーターはスペースとハイフンを無視するため、すべての文字列が「App」で始まるため、重要な文字は、この例では「<code>S」、「<code>l」、および「<code>B」であり、結果の順序は「」です。 <code>B" "<code>L" "<code>S" が正解です。

于 2013-10-28T17:20:50.230 に答える