【问题标题】:Java sorting an String Array by a Substring of charactersJava按字符子串对字符串数组进行排序
【发布时间】:2012-10-14 21:41:56
【问题描述】:

我需要按字符的子字符串对字符串数组进行排序,如下所示:

[0] = "gtrd3455";
[1] = "wsft885";
[2] = "ltzy96545";
[3] = "scry5558";
[4] = "lopa475";

我需要按以下“3455、885、96545、5558、475”排序 我需要对数组的前 4 个字符进行子串化,对其进行排序并显示在一个数组中,如下面的输出。

输出应该是一个数组,如:

[0] = "ltzy96545";
[1] = "scry5558";
[2] = "gtrd3455";
[3] = "wsft885";
[4] = "lopa475";

我如何在 Java 中执行此操作的示例?

【问题讨论】:

    标签: java arrays sorting


    【解决方案1】:

    您可以使用Comparator,并对其使用Array#sort 方法,根据需要对其进行排序:-

    String[] yourArray = new String[3];
    yourArray[0] = "gtrd3455";
    yourArray[1] = "ltzy96545";
    yourArray[2] = "lopa475";
    
    Arrays.sort(yourArray, new Comparator<String>() {
        public int compare(String str1, String str2) {
            String substr1 = str1.substring(4);
            String substr2 = str2.substring(4);
    
            return Integer.valueOf(substr2).compareTo(Integer.valueOf(substr1));
        }
    });
    
    System.out.println(Arrays.toString(yourArray));
    

    输出:-

    [ltzy96545, gtrd3455, lopa475]
    

    【讨论】:

    • @NullUserException。你也错过了一个有效的错误。我在 Integer.parseInt 上使用了 compareTo。它返回原始 int。 ;)
    • @NullUserException。已编辑:)
    • 如何读取文本文件的行并将每一行添加到字符串数组?然后根据该动态数组进行排序。
    • @Jsn0605 为此,您需要首先从文本文件中填充您的数组。然后剩下的过程都是一样的。
    • @Jsn0605。我建议改用ArrayList。因为你不知道你会从文件中得到多少行。
    猜你喜欢
    • 2014-01-05
    • 2021-02-04
    • 1970-01-01
    • 2016-04-23
    • 2014-10-28
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多