我有一個字符串集合,需要對它進行排序。我正在使用Collator。 但輸出很奇怪。Collator比較字符串怪異
final Collator collator = Collator.getInstance(Locale.US);
List<String> data = new ArrayList<String>();
data.add("1Z5800701_AB");
data.add("1Z5800701_AC");
data.add("1Z5800701-A");
data.add("1Z5800701 A");
data.add("1Z5800701B");
data.add("1Z5800701A");
data.add("1Z5800701 - A");
Collections.sort(data, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return collator.compare(o1, o2);
}
});
for (String s : data) {
System.out.println(s);
}
,輸出是:
1Z5800701_AB
1Z5800701_AC
1Z5800701A
1Z5800701 A
1Z5800701 - A
1Z5800701-A
1Z5800701B
最後一個字符串 '1Z5800701B' 應該是 '1Z5800701A' 之後。我在這裏錯過了什麼?
爲什麼會 「1Z5800701A」 過來人 「1Z5800701B」 之後? – 2013-03-05 17:35:22
我不這麼說。我說1Z5800701B應該去1Z5800701A之後,因爲B在A之後按字母順序排列,不是嗎? – Behnil 2013-03-05 17:47:25
請記住,Collator'執行區域設置敏感的字符串比較'。所以它不完全是char比較,而是特定於語言的比較。 – 2013-03-05 17:48:44