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

我正在尝试对太平洋岛语(夏莫罗语)的字符串进行排序。 在这种语言中, Ng被认为是一个字母,它在字母N后面。 我怎样才能排列一个单词列表,让NaiNunu都出现在以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);
    }
  }

在我实现上面的基于规则的整理器之后,我只写了下面的排序方法:

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

    });
  }
链接地址: http://www.djcxy.com/p/79277.html

上一篇: Custom sorting list of strings (following Chamorro language collation rules)

下一篇: core style indexed state monad?