Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java不区分大小写的本地化排序_Java_Sorting_Hyphen - Fatal编程技术网

Java不区分大小写的本地化排序

Java不区分大小写的本地化排序,java,sorting,hyphen,Java,Sorting,Hyphen,我有一组连字符字符串集。我想根据地区进行排序 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); S

我有一组连字符字符串集。我想根据地区进行排序

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());
虽然Collator.PRIMARY应该执行不区分大小写的排序,但使用上述两种方法的顺序之间存在差异。如何实现使用连字符的基于区域设置的不区分大小写排序顺序


[应用-大,应用-小,苹果]-预期排序顺序

不涉及区分大小写问题。收尾符忽略空格和连字符,因此,由于所有字符串都以“App”开头,因此在您的示例中,有效字母是“
S
”、“
l
”和“
B
”,结果顺序“
B
l
S
”是正确的。

下面是API中的引用

这不仅取决于实力,还取决于其他因素。将连字符('-')括在单引号之间,您将获得所需的输出''

规则元素的定义如下:

  • 文本参数:文本参数是任何字符序列,不包括特殊字符(即普通空白字符[0009-000D,0020]和规则语法字符[0021-002F,003A-0040,005B-0060,007B-007E])。如果需要这些字符,可以将它们放在单引号中(例如,与=>'&')。请注意,未加引号的空白字符将被忽略;e、 g.b.c被视为bc

,java.lang.String)

我正在使用TreeMap,所以我最初是这样写的。编辑以将其从主题中删除。关于,我的应用程序预期输出的排序顺序。查看以获取更多信息。感谢您的回复。感谢您的回复。
String.CASE_INSENSITIVE_ORDER

[App - Big, App - Small, Apple]  

Collator.PRIMARY

[App - Big, Apple, App - Small]