我的数组预计包含类似 "B1"
的元素和"C22"
对于任何字母 A-Z
和号码1-26
。
我需要对这个数组进行数字排序,所以排序时我们不考虑字符串的第一个字符。这样就有一个数组{"B1", "A22", "C9"}
将被排序为 {"B1", "C9", "A22"}
。
我尝试获取子字符串,但它不起作用,因为我不知道哪些字符串的长度为 3,哪些字符串的长度为 2。
最佳答案
您可以创建自己的比较器来忽略某些字符:
Arrays.sort(s, new MyComparator());
System.out.println(Arrays.toString(s));
class MyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
// Remove the chars you are want to ignore from o1, o2
o1 = o1.substring(1);
o2 = o2.substring(1);
return Integer.compare(Integer.parseInt(o1),Integer.parseInt(o2));
// return o1.compareTo(o2); see petr note bellow
}
}
关于java - 如何按除第一个字母以外的所有内容对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60213183/