Java 按字母顺序排序时忽略变音符号

Java 按字母顺序排序时忽略变音符号,java,internationalization,collation,diacritics,Java,Internationalization,Collation,Diacritics,我正在制作一个Java应用程序,它从SQLite接收一些名称并将它们放在一个列表框中。 问题是,我希望它以字母升序的方式准确排序(具体来说是葡萄牙语) 这些条目,例如: 贝塔 伊里达 安娜 应按以下顺序订购: 安娜 伊里达 贝塔 但是,由于它是按某种ASCII顺序排序的,因此上面的“重音”字符将在末尾抛出,而不是在它们对应的字母的正下方 结果: 安娜 贝塔 伊里达 我怎样才能解决这个问题?编辑:我的意思是用Java本身解决问题,而不是用SQlite改进 提前感谢。将a传递给字符串排序例程。您可以

我正在制作一个Java应用程序,它从SQLite接收一些名称并将它们放在一个列表框中。 问题是,我希望它以字母升序的方式准确排序(具体来说是葡萄牙语)

这些条目,例如:

贝塔 伊里达 安娜

应按以下顺序订购:

安娜 伊里达 贝塔

但是,由于它是按某种ASCII顺序排序的,因此上面的“重音”字符将在末尾抛出,而不是在它们对应的字母的正下方

结果: 安娜 贝塔 伊里达

我怎样才能解决这个问题?编辑:我的意思是用Java本身解决问题,而不是用SQlite改进


提前感谢。

将a传递给字符串排序例程。

您可以先将名称读入常规的
列表中,然后使用
集合.sort()
对列表进行排序。要指定区分区域设置的顺序,请使用

例如

列表名称=。。。从数据库中读取名称;
Collator-Collator=Collator.getInstance(新语言环境(“pt”);
集合。排序(名称、分类符);
这些名字将按字母顺序排列。您可能需要使用collator.setStrength(SECONDARY)使其“忽略”由于重音而产生的差异。这种行为是特定于语言的,所以我不能肯定

List<String> names = ... read names from db;
Collator collator = Collator.getInstance(new Locale("pt"));
Collections.sort(names, collator);