如何解决排序包含数字和字母的字符串列表
我正在尝试对字符串列表进行排序。字符串包含用户名及其终止符。我想使用用户名和-之前的杀死次数对列表进行排序。我已经阅读了有关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
}
}
解决方法
您可以使用比较器来完成。使用split(“-”)将分隔找到“-”的单个字符串并返回String []。然后借助Integer.parseInt((((String)o).split(“-”)[0])),它将第一个拆分的String项转换为Integer,比较器可以对列表进行相应的排序。>
WHERE NOT
输出: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());
我建议分步进行:
- 使用id和kills创建地图,
- 使用following topic的建议对此地图进行了排序,
- 将键保存到ArrayList,
例如(草稿,不检查):
public static void SortList() {
Map<String,Value> map = new HashMap();
for(String playerAndKill: TOP10_Players) {
String parts = playerAndKill.split('-');
int kills = Integer.parseInt(parts[0]);
map.put(playerAndKill,kills);
}
TOP10_Players = sortByValue(map).keySet();
}
public static <K,V extends Comparable<? super V>> Map<K,V> sortByValue(Map<K,V> map) {
List<Entry<K,V>> list = new ArrayList<>(map.entrySet());
list.sort(Entry.comparingByValue());
Map<K,V> result = new LinkedHashMap<>();
for (Entry<K,V> entry : list) {
result.put(entry.getKey(),entry.getValue());
}
return result;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。