随笔-16  评论-50  文章-2  trackbacks-0

摘要:在很多中文书籍的作者页中,有很多作者的话,很多时候,是按作者姓名的笔画顺序排序的。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<String> {

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

posted on 2007-12-20 20:39 Jeff Lau 阅读(2859) 评论(0)  编辑  收藏 所属分类: 跟老刘学Java

只有注册用户登录后才能发表评论。


网站导航: