Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Sorting - Fatal编程技术网

Java 排序数组不工作

Java 排序数组不工作,java,arrays,sorting,Java,Arrays,Sorting,有人能指出为什么分拣在这里不起作用吗 public static void main(String[] args) { String[] errorStr = new String[] { "Line No: " + " " + 1, "Line No: " + " " + 11, "Line No: " + " " + 10, "Line No: " + " " + 2, "Line No: " + "

有人能指出为什么分拣在这里不起作用吗

public static void main(String[] args) {       
   String[] errorStr = new String[] {
       "Line No: " + " " + 1,
       "Line No: " + " " + 11,
       "Line No: " + " " + 10,
       "Line No: " + " " + 2,
       "Line No: " + " " + 3
   };

   Arrays.sort(errorStr);       
   for(Object obj : errorStr){
       System.out.println(obj);
   }
}

它是按字典顺序排序的——按字典顺序,“11”排在“2”之前,“11号行”排在“2号行”之前

如果您想要“更智能”的排序,您需要实现一个
比较器
,它执行适当的解析以比较字符串

如果所有的值都是“Line No:”后跟一个值,我会将它们转换成一个数组或整数列表,因为这是您试图表示的自然数据。。。对
int
值数组进行排序将如您所期望的那样有效


从根本上说,这就是将数字作为字符串处理所得到的结果:)

它是按字典顺序排序的——按字典顺序,“11”在“2”之前,而“11”在“2”之前

如果您想要“更智能”的排序,您需要实现一个
比较器
,它执行适当的解析以比较字符串

如果所有的值都是“Line No:”后跟一个值,我会将它们转换成一个数组或整数列表,因为这是您试图表示的自然数据。。。对
int
值数组进行排序将如您所期望的那样有效


从根本上说,这就是将数字作为字符串处理的结果:)

正如Jon所说,这是按字典顺序对元素进行排序。您可以尝试使用所需的数字创建一个int数组,对其进行排序,然后将“行号:”连接到每个元素。我猜解决方案策略某种程度上取决于元素最初是如何无序的

编辑:这是代码示例

expected is,

Line No: 1
Line No: 2
Line No: 3
Line No: 10
Line No: 11

Actual is, 
Line No: 1
Line No: 11
Line No: 10
Line No: 2
Line No: 3
int[]errorInt=newint[]{1,11,10,2,3};
String[]errorString=新字符串[errorInt.length];
数组。排序(errorInt);
for(int i=0;i
正如Jon所说,它是按字典顺序对元素进行排序。您可以尝试使用所需的数字创建一个int数组,对其进行排序,然后将“行号:”连接到每个元素。我猜解决方案策略某种程度上取决于元素最初是如何无序的

编辑:这是代码示例

expected is,

Line No: 1
Line No: 2
Line No: 3
Line No: 10
Line No: 11

Actual is, 
Line No: 1
Line No: 11
Line No: 10
Line No: 2
Line No: 3
int[]errorInt=newint[]{1,11,10,2,3};
String[]errorString=新字符串[errorInt.length];
数组。排序(errorInt);
for(int i=0;i
或者,编写一个特殊类,将行号保存在适当的
int
字段中,并实现
Comparable
,在将它们转换为
String
@LouisWasserman:请参见我的编辑-看起来对整数集合的简单转换更适合我:)请参见:或者,编写一个特殊类,将行号保存在适当的
int
字段中,并实现
Compariable
,在将它们转换为
String
@LouisWasserman之前,请对它们进行排序:请参阅我的编辑-看起来对整数集合的简单转换更适合我:)请参阅:我遇到了类似的问题,您的解决方案听起来可能对我有效。你有一个非常快速和肮脏的例子,你可以编辑吗?我有类似的问题,你的解决方案听起来可能对我有用。你有没有一个很快又脏的例子可以编辑?