排序数组不起作用

Fir*_*iew 1 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: " + " " + 3
   };

   Arrays.sort(errorStr);       
   for(Object obj : errorStr){
       System.out.println(obj);
   }
}
Run Code Online (Sandbox Code Playgroud)

有人可以指出为什么排序在这里不起作用?

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
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

它按字典顺序排序 - 按字典顺序"11"出现在"2"之前,"行号:11"出现在"行号:2"之前.

如果你想要"更聪明"的排序,你需要实现一个Comparer<String>执行适当的解析以便比较字符串.

如果您的所有值实际上都是 "行号:"后跟一个值,我只是将它们转换为数组或整数列表,因为这是您尝试表示的自然数据...并对int值数组进行排序将按预期工作.

从根本上说,这就是你将数字视为字符串:)

  • @LouisWasserman:看看我的编辑 - 它看起来像一个整数集合的简单转换对我来说更合适:) (2认同)