<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人