我正在制作游戏插件。我需要从Config中获取10个值,并将其排在前10位。它应该打印前10个,如:
1. Name + points
2. Name + points
.
.
.
10. Name + points
使用下面粘贴的代码,我收到了:
[name1, name2, name3, name4][points1,points2,points3]
并没有像我想的那样排序。它应该是从最高到最低[10 resoults]
for (String g : Rpgg.getConfig().getConfigurationSection("Stats").getKeys(false)){
// Set<String> g = Rpgg.getConfig().getConfigurationSection("Stats").getKeys(false);
// int[] i1 = new int[]{i};
int i = Rpgg.getConfig().getInt("Stats."+g+".pkt");
l.add(i);
a.add(g);
Collections.sort(a);
Collections.sort(l);
map.put(g,i);
}
sorted_map.putAll(map);
Bukkit.broadcastMessage("lp:"+ "§4G:§6 " + a + " §4pkt§6 " + l);
答案 0 :(得分:0)
您可以将二维数组与您的信息一起使用,而不是使用2个单数组。
答案 1 :(得分:0)
“它给我从最低到最高。”
如果您目前从最低到最高,并且您想以相反的顺序,只需使用
Collections.reverseOrder()
- 返回一个比较器,它对实现Comparable接口的对象集合施加自然顺序的反转。在你的情况下:
Collections.sort(a, Collections.reverseOrder());
Collections.reverseOrder()
返回Comparator
。使用此Collections.sort
重载方法,该方法将Comparator
作为参数
public static void sort(List list, Comparator c)
编辑 - 按用户评论
“oK,现在我想将dat列表更改为int和string。怎么做?”
您应该做的是创建一个具有name
字段和score
字段的类,并使其实现Comparable
,如
public class User implements Comparable<User> {
String name;
int score;
public User(String name, int score){
this.name = name;
this.score = score;
}
public int compareTo(User user){
return user.getScore() - this.getScore();
}
public String getName(){
return name;
}
public int getScore(){
return score;
}
public String toString(){
return "Name: " + name + " Score: " + score;
}
}
然后你可以拥有User objects
并拥有一个List<User>
,你可以对其进行排序,而无需对分数和名称进行排序。
List<User> userList = new ArrayList<User>();
// populate list
Collections.sort(userList);
toString
方法将以字符串形式提供结果。只需打印User
对象
测试运行
import java.util.Collections;
import java.util.List;
public class UserDemo {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
users.add(new User("Jim", 4398));
users.add(new User("James", 9880));
users.add(new User("Jane", 10238));
users.add(new User("Jack", 5498));
users.add(new User("Josh", 6530));
users.add(new User("John", 12349));
users.add(new User("Jim", 9438));
users.add(new User("Jill", 12307));
users.add(new User("Jimbo", 23454));
users.add(new User("Jason", 5430));
Collections.sort(users);
for (User user : users) {
System.out.println(user);
}
}
}
输出:
Name: Jimbo Score: 23454
Name: John Score: 12349
Name: Jill Score: 12307
Name: Jane Score: 10238
Name: James Score: 9880
Name: Jim Score: 9438
Name: Josh Score: 6530
Name: Jack Score: 5498
Name: Jason Score: 5430
Name: Jim Score: 4398