好好学习,天天向上,自学网欢迎您!
当前位置:首页 >  考试 >  计算机类 > 内容页

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

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

  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;

TAG标签: 字符串 中文 排序 数字 方法