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)
它按字典顺序排序 - 按字典顺序"11"出现在"2"之前,"行号:11"出现在"行号:2"之前.
如果你想要"更聪明"的排序,你需要实现一个Comparer<String>执行适当的解析以便比较字符串.
如果您的所有值实际上都是 "行号:"后跟一个值,我只是将它们转换为数组或整数列表,因为这是您尝试表示的自然数据...并对int值数组进行排序将按预期工作.
从根本上说,这就是你将数字视为字符串:)