我正在尝试为太平洋岛屿语言(Chamorro)排序字符串列表.在这种语言中,Ng被认为是一个字母,它在字母表中的N之后.我如何对Nai和Nunu这两个单词列表进行排序,以便在Ng开头的单词之前出现?
更新
完整的字母表是:
A,Å,B,Ch,D,E,F,G,H,I,K,L,M,N,Ñ,Ng,O,P,R,S,T,U,Y
除Å,Ñ及其小写版本外,其他字母上没有重音.单词可以包含撇号(例如o’mak),但它们不会影响排序顺序.
Chamorro没有区域设置,因此我需要手动实现排序算法.
解决方法
感谢Dirk Lachowski,我实施了一个有效的解决方案.这是我写的:
static final String CHAMORRO_RULES = ("< a,A < å,Å < b,B < ch,Ch < d,D < e,E < f,F < g,G < h,H < i,I < k,K < l,L " + "< m,M < n,N < ñ,Ñ < ng,Ng < o,O < p,P < r,R < s,S < t,T < u,U < y,Y"); static final RuleBasedCollator CHAMORRO_COLLATOR; static { try { CHAMORRO_COLLATOR = new RuleBasedCollator(CHAMORRO_RULES); } catch (ParseException pe) { throw new RuntimeException(pe); } }
在我实现上面基于规则的collator后,我只是编写了以下排序方法:
static void sort(List<String> words) { Collections.sort(words,new Comparator<String>() { @Override public int compare(String lhs,String rhs) { return Constants.CHAMORRO_COLLATOR.compare(lhs,rhs); } }); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。