导航:首页 > 编程语言 > javalist字母排序

javalist字母排序

发布时间:2025-06-07 04:42:10

1. java list 字符精确排序 例如: a1 a12 a13 a2 a3 排序后是:a1 a2 a3 a12 a13 ,不是a1 a12 a13 a2 a3

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {

public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("3");list.add("a1");list.add("a12");list.add("a13");list.add("a2");
list.add("a3");list.add("c1");list.add("b2");list.add("d1");
list.add("b1");list.add("c3");list.add("2");list.add("1");
System.out.println("排序前------>"+list);
Collections.sort(list, new Comparator<String>() {
String regNum = "[\\d]";//数字字符
String regStr = "[^\\d]";//非数字字符
@Override
public int compare(String o1, String o2) {
int num1 = Integer.parseInt(o1.replaceAll(regStr, ""));
int num2 = Integer.parseInt(o2.replaceAll(regStr, ""));
String str1 = o1.replaceAll(regNum, "");
String str2 = o2.replaceAll(regNum, "");
//都有字母
if( ! isnull(str1) && ! isnull(str2)){
if(str1.compareTo(str2) > 0){
return 1;
}else if(str1.compareTo(str2) < 0){
return -1;
}else{
return num1-num2;
}
}else{//存在数字
//都是数字
if(isnull(str1) && isnull(str2)){
return num1 - num2;
}else if(isnull(str1) && ! isnull(str2)){//数字排前面:o1是数字,o2不是数字
return -1;
}else if(! isnull(str1) && isnull(str2)){//数字排前面:o1不是数字,o2是数字
return 1;
}else{
return 0;
}
}
}

});
System.out.println("排序后======>"+list);
}
private static boolean isnull(String str){
return str == null || str.trim().length() == 0;
}

}

阅读全文

与javalist字母排序相关的资料

热点内容
编程软件哪个需要钱 浏览:875
如何看自己的ie版本 浏览:492
2008r2用户文件夹路径 浏览:755
winzip文件压缩成多个小文件 浏览:562
勒索病毒文件是哪个 浏览:855
群聊机器人代码 浏览:728
用什么充电app最便宜 浏览:531
jspif语句 浏览:896
你删除的照片会在哪个文件夹 浏览:518
编程如何设置 浏览:393
微信jssdk分享qq空间 浏览:840
修改ipadid密码忘记了怎么办 浏览:938
纸质文件拍摄视频 浏览:560
今天的疫情数据怎么样 浏览:491
出国旅行不会英语需要什么app 浏览:351
移动机用联通数据库 浏览:710
启动器配置文件丢失怎么能 浏览:686
如何压缩王者荣耀文件 浏览:351
抖音哪些人在哪里统计数据 浏览:662
影视APP源码加教程 浏览:479

友情链接