按每个字符串中的逗号后的值按字母顺序对ArrayList进行排序

Naz*_*d12 0 java arrays string arraylist

我有一个包含字符串的ArrayList,如下所示:

  • 第1项:一些文字,Annabelle
  • 第2项:有些文字,詹姆斯
  • 第3项:一些文字,康纳

我想按照每个String中逗号后的值按字母顺序对ArrayList进行排序.

我怎样才能做到这一点?

    ArrayList<String> lineList = new ArrayList<>();

    // New BufferedReader.
    BufferedReader reader = new BufferedReader(new FileReader(
            file));

    // Add all lines from file to ArrayList.
    while (true) {
        String line = reader.readLine();
        if (line == null) {
            break;
        }
        lineList.add(line);
    }

    // Close it.
    reader.close();

    // Print each line.
    for (String line : lineList) {
        System.out.println(line);
    }
Run Code Online (Sandbox Code Playgroud)

jes*_*_bk 5

使用ComparatorCollections.sort()方法.

例如:

Collections.sort(lineList, new Comparator<String>{
    public int compare(String str1, String str2) {
        String actual1 = str1.split(",")[1];
        String actual2 = str2.split(",")[1];

        return actual1.compare(actual2);
    }
});
Run Code Online (Sandbox Code Playgroud)

您可能需要某种方法来确保实际提取字符串的正确部分,以防有零个或多个逗号.例如,您可以substring()lastIndexOf()提到的IQV 结合使用.

  • "你可能想要某种方式来确保......"或者如果唯一的逗号在最后,例如`Foo,`. (2认同)