Min*_*tis 20 java sorting collation utf-8
我想排序,ArrayList<String>但问题是我的母语字符 - 我的字母是这样的:a, ?, b, c, ?, d, e, f ... z, ž.如你所见,z字符从结尾开始?是第二位,在字母表中排在第二位,因此在对数组进行排序后,它排序不正确.我的所有母语字符都移动到数组的末尾.例:
package lt;
import java.util.ArrayList;
import java.util.Collections;
public class test {
public static void main(String[] args) {
List<String> items = new ArrayList<>();
items.add("bbc");
items.add("?bc");
items.add("abc");
items.add("zzz");
System.out.println("Unsorted: ");
for(String str : items) {
System.out.println(str);
}
Collections.sort(items);
System.out.println();
System.out.println("Sorted: ");
for(String str : items) {
System.out.println(str);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Unsorted:
bbc
?bc
abc
zzz
Sorted:
abc
bbc
zzz
?bc
Run Code Online (Sandbox Code Playgroud)
应该:
Sorted:
abc
?bc
bbc
zzz
Run Code Online (Sandbox Code Playgroud)
Vic*_*Vic 22
你应该使用Collator类.
例如
Locale lithuanian = new Locale("lt_LT");
Collator lithuanianCollator = Collator.getInstance(lithuanian);
Run Code Online (Sandbox Code Playgroud)
然后使用此collator对集合进行排序
Collections.sort(theList, lithuanianCollator);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6864 次 |
| 最近记录: |