在不区分大小写的情况下按字母顺序对ArrayList进行排序,并在末尾使用任意数字字符串,可以按照以下步骤进行:
以下是一个示例代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ArrayListSortExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
list.add("123");
list.add("xyz");
list.add("456");
Collections.sort(list, new IgnoreCaseComparator());
for (String str : list) {
System.out.println(str);
}
}
static class IgnoreCaseComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
String pattern = "([a-zA-Z]+)(\\d+)?";
Pattern p = Pattern.compile(pattern);
Matcher m1 = p.matcher(s1);
Matcher m2 = p.matcher(s2);
if (m1.find() && m2.find()) {
String letters1 = m1.group(1);
String letters2 = m2.group(1);
int result = letters1.compareToIgnoreCase(letters2);
if (result == 0) {
String digits1 = m1.group(2);
String digits2 = m2.group(2);
if (digits1 != null && digits2 != null) {
return Integer.compare(Integer.parseInt(digits1), Integer.parseInt(digits2));
} else if (digits1 != null) {
return -1;
} else if (digits2 != null) {
return 1;
}
}
return result;
}
return 0;
}
}
}
这段代码会输出以下结果:
abc
def
xyz
123
456
在这个示例中,我们创建了一个ArrayList对象,并添加了一些字符串元素。然后使用自定义的IgnoreCaseComparator比较器对ArrayList进行排序。比较器会按照字母顺序进行排序,不区分大小写,并在字母部分相同的情况下比较数字部分。最后输出排序后的结果。
请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当修改。
领取专属 10元无门槛券
手把手带您无忧上云