隨筆-16  評論-50  文章-2  trackbacks-0

          摘要:在很多中文書籍的作者頁中,有很多作者的話,很多時(shí)候,是按作者姓名的筆畫順序排序的。Microsoft的Excel和Sql Server實(shí)現(xiàn)了按筆畫排序的功能。那按筆畫順序排序,在Java中究竟怎樣實(shí)現(xiàn)呢?


          作者:Jeff 發(fā)表于:2007-12-20 20:39 最后更新于: 2007年12月21日 12:17
          版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本版權(quán)聲明
          http://www.aygfsteel.com/jeff-lau/archive/2007/12/20/169147.html


          合并了

          已經(jīng)將《中文排序--筆畫》和《中文排序--漢語拼音》修改并合并《中文排序》中。這里只保留最后的代碼。實(shí)現(xiàn)的原理和方法請見中文排序

          /**
            * @author Jeff
            *
            * Copyright (c) 復(fù)制或轉(zhuǎn)載本文,請保留該注釋。
            */
          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 閱讀(2883) 評論(0)  編輯  收藏 所屬分類: 跟老劉學(xué)Java
          主站蜘蛛池模板: 新龙县| 罗山县| 任丘市| 佛冈县| 南丰县| 泗洪县| 清涧县| 临泉县| 雅安市| 肇庆市| 康马县| 石城县| 尼木县| 永昌县| 江华| 琼中| 出国| 安吉县| 独山县| 平南县| 嘉禾县| 太康县| 富裕县| 丰镇市| 五原县| 准格尔旗| 城市| 谷城县| 喀喇沁旗| 双桥区| 巴彦淖尔市| 湘潭县| 界首市| 聂荣县| 饶阳县| 双鸭山市| 泸定县| 英超| 中山市| 双柏县| 两当县|