对包含数字和字母的字符串列表进行排序

jon*_*nen 2 java arrays sorting list bukkit

我正在尝试对字符串列表进行排序。字符串包含用户名和他们的杀戮。我想使用用户名和 - 之前的杀死数对列表进行排序。我已经阅读了 Comparator 并尝试了一些但没有任何运气。

public class Test {
    public static List<String> TOP10_Players = new ArrayList<>();
    
    public static void AddPlayers() {
        // TOP10_Players.add("[Kills]-[Username]");
        TOP10_Players.add("1-Username1");
        TOP10_Players.add("2-Username2");
        TOP10_Players.add("3-Username3");
        
        SortList();
    }
    
    public static void SortList() {
        // Code to sort list
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

你可以通过使用比较器来做到这一点。使用 split("-") 将分离单个字符串,其中找到 "-" 并返回一个 String[]。然后在 Integer.parseInt(((String) o).split("-")[0])) 的帮助下,它将第一个拆分的 String 项转换为 Integer,Comparator 可以相应地对列表进行排序。

TOP10_Players.sort(Comparator.comparing((Object o) -> Integer.parseInt(((String) o).split("-")[0])));
Run Code Online (Sandbox Code Playgroud)

输出: [1-Username1, 3-Username3, 5-Username2]

对于降序:

TOP10_Players.sort(Comparator.comparing((Object o) -> Integer.parseInt(((String) o).split("-")[0])).reversed());
Run Code Online (Sandbox Code Playgroud)

输出: [5-Username2, 3-Username3, 1-Username1]