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

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


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


          合并了

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

          /**
            * @author Jeff
            *
            * Copyright (c) 復制或轉(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)  編輯  收藏 所屬分類: 跟老劉學Java
          主站蜘蛛池模板: 城市| 南和县| 新邵县| 溧水县| 石嘴山市| 日照市| 浙江省| 佛教| 平阳县| 嘉义市| 伊川县| 万州区| 乌兰浩特市| 上高县| 桂阳县| 富平县| 玛沁县| 武定县| 仙桃市| 长春市| 勐海县| 邵东县| 尚义县| 宕昌县| 保山市| 溆浦县| 公主岭市| 新巴尔虎左旗| 舒兰市| 内乡县| 绥中县| 项城市| 措美县| 朝阳市| 芦山县| 安龙县| 长宁县| 万源市| 乌恰县| 江孜县| 宽甸|