《2023年Java字符串排序中文和数字的方法.docx》由会员分享,可在线阅读,更多相关《2023年Java字符串排序中文和数字的方法.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年Java字符串排序中文和数字的方法 Java字符串排序中文和数字的方法 在Java中,排序需要复写的是 equals 方法 和 Comparable 接口 的public int compareToT o;。下面是我为大家带来的Java字符串排序中文和数字的方法,欢迎阅读。 方法步骤: 1. 使用正则表达式来推断数字,多个连续的数字作为一组, 2. 一次检索出数字组合, 3. 检出下一组数字,假如有,则进入步骤4,否则进入步骤6. 4. 假如两组数字出现的位置相等,并且前面部分的字符串相等,则进入第5步。否则break,跳到第6步. 5. 假如前面部分的字符串完全一致。则比较两个数字
2、的大小,假如大小一致,则进入下一组,即步骤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 =
3、 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 Orde
4、rWrapper 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.
5、name; String name2 = wrapper.name; / 特别情形,name有一个为空的状况. ifnull = name1 / 都为空,认为相对 ifnull = name2 return 0; else return -1; else ifnull = name2 return 1; / 中间 1-多个数字 Pattern pattern = Pattern pile"D*d+D*" Matcher matcher1 = pattern.matchername1; Matcher matcher2 = pattern.matchername2; /Sys
6、tem.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_ste
7、p = 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 / l
8、ong num1 = Long.parseLongs1; long num2 = Long.parseLongs2; / ifnum1 = num2 / 比较下一组 continue; else return intnum1 - num2; else break; else break; / 最终的情形. return this.name pareTowrapper.name; public static void testNew List chinesesOrderList = new ArrayList; chinesesOrderList.addnew OrderWrapper"
9、;我们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" chinesesOrde
10、rList.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后相亲奇
11、遇记-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; PREV ARTICLEJava 异步回调机制实例解析NEXT ARTICLE网页设计中CSS布局调试的十个有效的方法