【发布时间】:2010-10-27 18:38:23
【问题描述】:
这是一个简单的 ArrayList 排序程序:
ArrayList<String> list = new ArrayList<String>();
list.add("1_Update");
list.add("11_Add");
list.add("12_Delete");
list.add("2_Create");
Collections.sort(list);
for (String str : list) {
System.out.println(str.toString());
}
我期待这个程序的输出为:
1_Update
2_Create
11_Add
12_Delete
但是当我运行这个程序时,我得到的输出是:
11_Add
12_Delete
1_Update
2_Create
为什么会这样?如何让 ArrayList 进行排序,如预期输出所示?
【问题讨论】:
-
是的,它是在进行字符串比较而不是整数。
-
尝试查找“自然顺序比较”sourcefrog.net/projects/natsort
-
因为它的排序为字符串ASCII Table
-
数字小于下划线,因此“11”小于“1_”。