<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            Java字符串排序中文和數字的方法

            時間:2024-12-14 17:25:09 java語言 我要投稿
            • 相關推薦

            Java字符串排序中文和數字的方法

              在Java中,排序需要復寫的是 equals 方法 和 Comparable 接口 的public int compareTo(T o);。下面是小編為大家帶來的Java字符串排序中文和數字的方法,歡迎閱讀。

              方法步驟:

              1. 使用正則表達式來判斷數字,多個連續的數字作為一組,

              2. 一次檢索出數字組合,

              3. 檢出下一組數字,如果有,則進入步驟4,否則進入步驟6.

              4. 如果兩組數字出現的位置相等,并且前面部分的字符串相等,則進入第5步。否則break,跳到第6步.

              5. 如果前面部分的字符串完全一致。則比較兩個數字的大小,如果大小一致,則進入下一組,即步驟3.如果大小不一致,則可以比對出來大小,比較結束

              6. 調用String的compareTo方法,病返回(流程結束)。

              完整的代碼如下:

              import java.util.ArrayList;

              import java.util.Collections;

              import java.util.List;

              import java.util.regex.Matcher;

              import java.util.regex.Pattern;

              //包裝器類

              public class OrderWrapper implements Comparable{

              String name = null;

              public OrderWrapper(String name){

              this.name = name;

              }

              public String getName() {

              return name;

              }

              public void setName(String name) {

              this.name = name;

              }

              @Override

              public String toString() {

              return String.valueOf(name);

              }

              @Override

              public boolean equals(Object obj) {

              if(obj == this){

              return true;

              }

              if(obj instanceof OrderWrapper){

              OrderWrapper other = (OrderWrapper)obj;

              if(null == this.name){

              return false;

              } else {

              return this.name.equals(other.name);

              }

              }

              return false;

              }

              // 比較方法,相當于減法。 (return this - wrapper)

              public int compareTo(OrderWrapper wrapper) {

              if(null == wrapper){

              return 1;

              }

              // 直接相等

              if(this == wrapper || this.equals(wrapper)){

              return 0;

              }

              String name1 = this.name;

              String name2 = wrapper.name;

              // 特殊情形,name有一個為空的情況.

              if(null == name1){

              // 都為空,認為相對

              if(null == name2){

              return 0;

              } else {

              return -1;

              }

              } else if(null == name2){

              return 1;

              }

              // 中間 1-多個數字

              Pattern pattern = Pattern.compile("D*(d+)D*");

              Matcher matcher1 = pattern.matcher(name1);

              Matcher matcher2 = pattern.matcher(name2);

              //System.out.println(pattern.pattern());

              //

              int index1_step = 0;

              int index2_step = 0;

              while(matcher1.find()){

              String s1 = matcher1.group(1);

              String s2 = null;

              if(matcher2.find()){

              s2 = matcher2.group(1);

              }

              int index1 = name1.indexOf(s1, index1_step);

              int index2 = name2.indexOf(s2, index2_step);

              //

              index1_step = index1;

              index2_step = index2;

              // 索引相等的情況下

              if(index1 == index2){

              System.out.println("name1="+name1.length()+"nname2="+name2.length());

              System.out.println("index1="+index1+",index2="+index2);

              String pre1 = name1.substring(0, index1);

              String pre2 = name2.substring(0, index2);

              if(pre1.equals(pre2)){

              //

              long num1 = Long.parseLong(s1);

              long num2 = Long.parseLong(s2);

              //

              if(num1 == num2){

              // 比較下一組

              continue;

              } else {

              return (int)(num1 - num2);

              }

              } else {

              break;

              }

              } else {

              break;

              }

              }

              // 最后的情形.

              return this.name.compareTo(wrapper.name);

              }

              public static void testNew(){

              List chinesesOrderList = new ArrayList();

              chinesesOrderList.add(new OrderWrapper("我們80后相親奇遇記-1.mp3"));

              chinesesOrderList.add(new OrderWrapper("他80后相親奇遇記-10.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-11.mp3"));

              chinesesOrderList.add(new OrderWrapper("啊80后相親奇遇記-12.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-13.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-25.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-26.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-2.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-3.mp3"));

              chinesesOrderList.add(new OrderWrapper("我80后相親奇遇記-4.mp3"));

              chinesesOrderList.add(new OrderWrapper("a80后相親奇遇記-4.mp3"));

              //Collator collatorChinese = Collator.getInstance(java.util.Locale.CHINA);

              //collatorChinese = Collator.getInstance(java.util.Locale.CHINESE);

              // Collections.sort(chinesesOrderList, collatorChinese);

              Collections.sort(chinesesOrderList);

              System.out.println("中文+數字排序: = ");

              for (int i = 0; i < chinesesOrderList.size(); i++) {

              OrderWrapper chinese = chinesesOrderList.get(i);

              System.out.println("" + chinese);

              }

              }

              public static void main(String[] args) {

              testNew();

              }

              }


            【Java字符串排序中文和數字的方法】相關文章:

            java判斷字符串是否為數字的幾個方法07-26

            java的常見排序方法08-31

            JAVA常用4種排序方法09-26

            java常用字符串方法10-01

            Java實現字符串倒序輸出的常用方法08-29

            Java字符串(String)09-21

            Java排序算法06-17

            關于Java字符串問題09-09

            冒泡排序算法原理及JAVA實現代碼方法10-16

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院