Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对包含数字和字母的字符串列表进行排序_Java_Arrays_List_Sorting_Bukkit - Fatal编程技术网

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

Java 对包含数字和字母的字符串列表进行排序,java,arrays,list,sorting,bukkit,Java,Arrays,List,Sorting,Bukkit,我正在尝试对字符串列表进行排序。字符串包含用户名及其kill。我想使用用户名和-,前的杀死数对列表进行排序。我读过有关Comparator的文章,并在没有任何运气的情况下尝试了一些 public class Test { public static List<String> TOP10_Players = new ArrayList<>(); public static void AddPlayers() { // TOP10_P

我正在尝试对字符串列表进行排序。字符串包含用户名及其kill。我想使用用户名和-,前的杀死数对列表进行排序。我读过有关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
    }
}
公共类测试{
public static List TOP10_Players=new ArrayList();
公共静态void AddPlayers(){
//前10名玩家。添加(“[Kills]-[Username]”);
前10名玩家。添加(“1-Username1”);
前10名玩家。添加(“2-Username2”);
前10名玩家。添加(“3-Username3”);
SortList();
}
公共静态无效排序列表(){
//排序列表的代码
}
}

我建议一步一步地做:

  • 创建带有id和kills的地图
  • 使用此地图中的建议
  • 将密钥保存到ArrayList
  • 例如(草稿,不检查):

    publicstaticvoidsortlist(){
    Map Map=newhashmap();
    为(弦乐演奏家)打球:前10名{
    字符串部分=playerAndKill.split('-');
    int kills=Integer.parseInt(部分[0]);
    地图。放置(playerAndKill,kills);
    }
    TOP10_Players=sortByValue(map).keySet();
    }
    
    publicstatic您可以通过使用Comparator来实现。使用split(“-”)将分隔找到“-”的单个字符串,并返回字符串[]。然后在Integer.parseInt(((String)o.split(“-”[0])的帮助下,它将第一个拆分的字符串项转换为整数,比较器可以相应地对列表进行排序

    TOP10_Players.sort(Comparator.comparing((Object o) -> Integer.parseInt(((String) o).split("-")[0])));
    
    输出:
    [1-Username1,3-Username3,5-Username2]

    按降序排列:

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

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

    所以。。。你试过什么?基本上,它只是字符串上的一个compareTo如果您有1-user1和10-user2(因为10-user2是第一个),那么字符串上的compareTo就不起作用了。
    TOP10_Players.sort(Comparator.comparing((Object o) -> Integer.parseInt(((String) o).split("-")[0])).reversed());