中文排序 - 笔画 - Jeff on Java - BlogJava

来源:百度文库 编辑:神马文学网 时间:2024/05/23 12:21:49
中文排序 - 笔画

摘要:在很多中文书籍的作者页中,有很多作者的话,很多时候,是按作者姓名的笔画顺序排序的。Microsoft的Excel和Sql Server实现了按笔画排序的功能。那按笔画顺序排序,在Java中究竟怎样实现呢?


作者:Jeff 发表于:2007-12-20 20:39 最后更新于: 2007年12月21日 12:17
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
http://www.blogjava.net/jeff-lau/archive/2007/12/20/169147.html


合并了

已经将《中文排序--笔画》和《中文排序--汉语拼音》修改并合并《中文排序》中。这里只保留最后的代码。实现的原理和方法请见中文排序

/**
  * @author Jeff
  *
  * Copyright (c) 复制或转载本文,请保留该注释。
  */
package chinese.utility;

import java.util.Comparator;

public class StrokeComparator implements Comparator {

    public int compare(String o1, String o2) {

        Chinese chinese = new Chinese();

        for (int i = 0; i < o1.length() && i < o2.length(); i++) {
            int codePoint1 = o1.codePointAt(i);
            int codePoint2 = o2.codePointAt(i);
            if (codePoint1 == codePoint2)
                continue;

            int stroke1 = chinese.stroke(codePoint1);
            int stroke2 = chinese.stroke(codePoint2);

            if (stroke1 < 0 || stroke2 < 0) {
                return codePoint1 - codePoint2;
            }

            if (stroke1 != stroke2) {
                return stroke1 - stroke2;
            }
        }

        return o1.length() - o2.length();
    }
}