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 - Fatal编程技术网

Java 比较法中数字和字符顺序的影响

Java 比较法中数字和字符顺序的影响,java,sorting,Java,Sorting,我有一个Wicket web应用程序,它按以下顺序对表行进行排序: 升序: 第一个字符(A-Z) 然后是数字(1-9) 现在我正在编写一个webunit测试来测试排序机制,但它似乎可以切换字符和数字的顺序,如: 升序: 第一组数字(1-9) 然后是字符(A-Z) 因此,当按升序排序时,此代码将失败,并遇到两个条目: ZZZ 111 我的简化排序代码: protected int compare(String val1, String val2) { return

我有一个Wicket web应用程序,它按以下顺序对表行进行排序:

升序:

  • 第一个字符(A-Z)
  • 然后是数字(1-9)
现在我正在编写一个webunit测试来测试排序机制,但它似乎可以切换字符和数字的顺序,如:

升序:

  • 第一组数字(1-9)
  • 然后是字符(A-Z)
因此,当按升序排序时,此代码将失败,并遇到两个条目:

  • ZZZ
  • 111
我的简化排序代码:

protected int compare(String val1, String val2) {
        return val1.compareTo(val2);
}
告诉我的测试代码测试顺序的“java方式”是什么,就像我的web应用程序生成顺序一样? 可能类似于
Collator
?我更喜欢JRE解决方案,而不是自编的
比较器
,而不是第三方库。

您可以尝试使用如下方法:

String rule = "<a,A<b,B<c,C<[...]<'1'<'2'<'3'<'4'[...]";
RuleBasedCollator collator = new RuleBasedCollator(rule);
return collator.compare(val1,val2);

String rule=“我不知道内置的JRE解决方案。编写自己的
Comparator
或包装字符串是自定义的
Comparable
类可能是您最好的选择。谢谢,这很有效。您能编辑规则并删除“a”后的第二个逗号吗?