Java 对包含数字和字母的字符串列表进行排序
我正在尝试对字符串列表进行排序。字符串包含用户名及其kill。我想使用用户名和-,前的杀死数对列表进行排序。我读过有关Comparator的文章,并在没有任何运气的情况下尝试了一些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
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();
}
公共静态无效排序列表(){
//排序列表的代码
}
}
我建议一步一步地做:
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());