在Java中对多语言环境字符串进行排序
我正在尝试按字符串字段“country”对对象列表进行排序.每个国家都使用其母语
>阿根廷 我想做的是让“България”例如出现在“A *”国家之后,因为字母’Б’对应于拉丁’B’.我正在尝试使用默认的Collat??er,但非拉丁名称仍然在列表中排在最后. 到目前为止,这是我的代码: private static final Comparator<DomainTO> DOMAIN_COUNTRY_COMPARATOR = new Comparator<DomainTO>() { @Override public int compare(DomainTO t,DomainTO t1) { Collator defaultCollator = Collator.getInstance(); return defaultCollator.compare(t.getCountry(),t1.getCountry()); } }; 解决方法
如何对不同语言的单词进行排序?有许多字母表(英语,俄语,德语等).
每个人都订购了一系列信件.对来自一个字母表的单词进行排序很容易.但是有可能将所有这些字母合并成一个吗? 我认为不可能以一种可以被所有人接受的方式来实现.以英语和俄语字母为例. 俄语字母可以转换成英文字母(至少大部分都是这样)但是在这个演员之后他们会改变顺序. 这将有利于一个字母表而不是另一个字母表.为什么不给俄语写英文字母? 另一个问题是有特殊字母.在德语中,O和P之间有?,波兰语中有ó在这个地方. 所以我们有以下关系: O < ? < P O < ó < P 但?和ó之间的关系是什么?如果有一个国家ósterreich它应该是或?sterreich之后? 我们所能做的就是将所有字母表投射到所选字母表中.这就是OP正在尝试做的事情. 那我们怎么做这样的排序呢? >第一个主张是为每个国家手动提供拉丁名称.所以我们会有一个包含对的列表 >РоссияRossija >第二种方法是运行类似于此的代码: 码: char [] russian = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщ".toCharArray(); char [] russian_to = "AaBbWwGgDdEeEeZzZzIiJjKkLlMmNnOoPpRrSsTtUuFfHhCcCcSsss".toCharArray(); for (int i = 0; i < russian.length; i++) { input = input.replace(russian[i],russian_to[i]); } 这样我们就转换了俄语字母表中的所有字母.现在我们必须为其他字母添加类似的代码.而俄语是最简单的. >为什么我们对元素进行排序?:使它们更容易找到. 那么让我们回答这个问题:这种排序是否更容易找到只知道他的母语的人? >如果有人来自奥地利,那么他认为?sterreich将在所有以O开头的国家之后. 摘要: 用不同语言编写的国家名称排序很难定义和实现.实施后,它将无用或有害. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |