java - 如何按除第一个字母以外的所有内容对字符串数组进行排序

标签 java arrays sorting

我的数组预计包含类似 "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/

相关文章:

java - 设置内部类的日志级别(在 Glassfish 中)

java - 我不能在 Java 11 中使用 @PostConstruct 和 @PostDestroy

javascript - 选择要循环的数组

javascript - 排序错误的 array.Javascript

python - 如何对 pandas 中的字符串中的数字进行排序?

java - 使用 android AccountManager 获取 OAuth2 token ?

java - 设置 Activity 对话框不可取消

java - 打印 3d 数组中的所有值

arrays - 从任何 Controller 快速创建和访问数组

java - 按字母顺序对 Java 对象排序为 JSON 对象