public static void main(String args[]) {
//字母是升序,数值倒序,E系列放最后或数值倒序
List<String> list = new ArrayList<>();
list.add("X21i A(6+64G)福州思扬");
list.add("X21A(6+128G)福建电");
list.add("X9Plus");
list.add("X9s L");
list.add("X20");
list.add("X20Plus");
list.add("X9s");
list.add("Y75s(4+64G)");
list.add("Y79");
list.add("E3");
list.add("E8");
//字母开头,中间夹杂数值
Pattern pattern = Pattern.compile("^([a-zA-Z]+)([0-9]+).*$");
list.sort((o1, o2) -> {
Matcher matcher1 = pattern.matcher(o1);
Matcher matcher2 = pattern.matcher(o2);
boolean b1 = matcher1.find();
boolean b2 = matcher2.find();
if (b1 && b2) {
//获取字母
String group1 = matcher1.group(1);
String group2 = matcher2.group(1);
//如果字母不一样,则不变
if (group1 != null && group2 != null && !group1.equals(group2)) {
return 0;
}
//获取数值
group1 = matcher1.group(2);
group2 = matcher2.group(2);
//如果字母不一样,则比较数值
int i1 = Integer.parseInt(group1);
int i2 = Integer.parseInt(group2);
return i2 - i1;
}
return 0;
});
for (String s : list) {
System.out.println(s);
}
}
java正则表达式,实现对list的排序算法
最新推荐文章于 2022-05-31 18:39:28 发布