当前位置:免费学习网考试资料计算机类内容页

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

2021-08-31 07:30:02 计算机类 访问手机版

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

  在Java中,排序需要复写的是 equals 方法 和 Comparable 接口 的public int compareToT 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 OrderWrapperString name

  this.name = name;

  public String getName

  return name;

  public void setNameString name

  this.name = name;

  @Override

  public String toString

  return String.valueOfname;

  @Override

  public boolean equalsObject obj

  ifobj == this

  return true;

  ifobj instanceof OrderWrapper

  OrderWrapper other = OrderWrapperobj;

  ifnull == this.name

  return false;

  else

  return this.name.equalsother.name;

  return false;

  // 比较方法,相当于减法。 return this - wrapper

  public int compareToOrderWrapper wrapper

  ifnull == wrapper

  return 1;

  // 直接相等

  ifthis == wrapper || this.equalswrapper

  return 0;

  String name1 = this.name;

  String name2 = wrapper.name;

  // 特殊情形,name有一个为空的情况.

  ifnull == name1

  // 都为空,认为相对

  ifnull == name2

  return 0;

  else

  return -1;

  else ifnull == name2

  return 1;

  // 中间 1-多个数字

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

  Matcher matcher1 = pattern.matchername1;

  Matcher matcher2 = pattern.matchername2;

  //System.out.printlnpattern.pattern;

  //

  int index1_step = 0;

  int index2_step = 0;

  whilematcher1.find

  String s1 = matcher1.group1;

  String s2 = null;

  ifmatcher2.find

  s2 = matcher2.group1;

  int index1 = name1.indexOfs1, index1_step;

  int index2 = name2.indexOfs2, index2_step;

  //

  index1_step = index1;

  index2_step = index2;

  // 索引相等的情况下

  ifindex1 == index2

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

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

  String pre1 = name1.substring0, index1;

  String pre2 = name2.substring0, index2;

  ifpre1.equalspre2

  //

  long num1 = Long.parseLongs1;

  long num2 = Long.parseLongs2;

  //

  ifnum1 == num2

  // 比较下一组

  continue;

  else

  return intnum1 - num2;

  else

  break;

  else

  break;

  // 最后的情形.

  return this.name.compareTowrapper.name;

  public static void testNew

  List chinesesOrderList = new ArrayList;

  chinesesOrderList.addnew OrderWrapper"我们80后相亲奇遇记-1.mp3";

  chinesesOrderList.addnew OrderWrapper"他80后相亲奇遇记-10.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-11.mp3";

  chinesesOrderList.addnew OrderWrapper"啊80后相亲奇遇记-12.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-13.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-25.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-26.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-2.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-3.mp3";

  chinesesOrderList.addnew OrderWrapper"我80后相亲奇遇记-4.mp3";

  chinesesOrderList.addnew OrderWrapper"a80后相亲奇遇记-4.mp3";

  //Collator collatorChinese = Collator.getInstancejava.util.Locale.CHINA;

  //collatorChinese = Collator.getInstancejava.util.Locale.CHINESE;

  // Collections.sortchinesesOrderList, collatorChinese;

  Collections.sortchinesesOrderList;

  System.out.println"中文+数字排序: = ";

  for int i = 0; i < chinesesOrderList.size; i++

  OrderWrapper chinese = chinesesOrderList.geti;

  System.out.println"" + chinese;

  public static void mainString[] args

  testNew;