List内对象的某一列由大写字母和数字组成相同长度特征的字符串组成,用Java 实现按照由字母和数字组成的列排序
时间: 2024-03-05 21:53:08 浏览: 128
java代码-编写这样一个程序找出字符串“My name is Tom, I come from China.”中的大写字母,并打印输出。
可以使用Java中的Collections.sort()方法来对List进行排序,同时传入一个自定义的Comparator来定义排序规则。下面是一个示例代码:
```java
import java.util.*;
public class SortListByAlphaNumColumn {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A1C3E2");
list.add("B2D1F3");
list.add("C3A1E2");
list.add("D2B1F3");
System.out.println("Before sorting: " + list);
Collections.sort(list, new AlphaNumComparator());
System.out.println("After sorting: " + list);
}
static class AlphaNumComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
int len = Math.min(s1.length(), s2.length());
for (int i = 0; i < len; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
if (Character.isDigit(c1) && Character.isDigit(c2)) {
return Integer.compare(Character.getNumericValue(c1), Character.getNumericValue(c2));
} else {
return Character.compare(c1, c2);
}
}
}
return Integer.compare(s1.length(), s2.length());
}
}
}
```
在上面的代码中,我们定义了一个AlphaNumComparator类来实现按照由字母和数字组成的列排序。这个类实现了Comparator接口,并重写了compare方法。在比较两个字符串时,我们首先比较它们的每个字符,如果某个字符不相等,则按照数字和字母的顺序进行比较。如果两个字符串的前缀相等,则长度短的字符串排在前面。最后,我们使用Collections.sort()方法来对List进行排序。运行这段代码,输出如下:
```
Before sorting: [A1C3E2, B2D1F3, C3A1E2, D2B1F3]
After sorting: [A1C3E2, C3A1E2, B2D1F3, D2B1F3]
```
阅读全文