加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 自定义排序字符串列表(遵循Chamorro语言排序规则)

发布时间:2020-12-15 00:56:04 所属栏目:Java 来源:网络整理
导读:我正在尝试为太平洋岛屿语言(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
我正在尝试为太平洋岛屿语言(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);
    }
  }

在我实现上面基于规则的collat??or后,我只是编写了以下排序方法:

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);
      }

    });
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读