如何在Android/Java中对嵌套数组进行排序?
我有一个未排序的玩家数组,通过JSON响应:如何在Android/Java中对嵌套数组进行排序?,java,android,Java,Android,我有一个未排序的玩家数组,通过JSON响应: "participants": [{ "participant": { "rank": 3, "name": "I Tied for third", } }, { "participant": { "rank": 1, "name": "I got first", } }, { "participant": { "rank": 3,
"participants": [{
"participant": {
"rank": 3,
"name": "I Tied for third",
}
}, {
"participant": {
"rank": 1,
"name": "I got first",
}
}, {
"participant": {
"rank": 3,
"name": "Also tied for third",
}
}, {
"participant": {
"rank": 2,
"name": "I got second",
}
}]
我想以某种方式对其进行排序,以便最终打印出球员的姓名和排名。。。但按顺序
我曾想过可能将数组的结果放入树映射,但后来我意识到树映射需要唯一的数组键,这是行不通的:
Map<Integer, String> players = new TreeMap<>();
for (int i = 0; i < participants.length(); i++) {
JSONObject object = participants.getJSONObject(i);
JSONObject participant = object.getJSONObject("participant");
players.put(participant.getInt("rank"), participant.getString("name"));
}
Map players=newtreemap();
对于(int i=0;i
那么,还有其他方法可以完成这项工作吗?在@VivekMishra的帮助下,我成功地完成了这项工作:
ArrayList<PlayerObject> players = new ArrayList<>();
for (int i = 0; i < participants.length(); i++) {
JSONObject object = participants.getJSONObject(i);
JSONObject participant = object.getJSONObject("participant");
players.add(new PlayerObject(participant.getInt("rank"), participant.getString("name")));
}
Collections.sort(players);
arraylistplayers=newarraylist();
对于(int i=0;i
与:
class PlayerObject实现了可比较的{
私有整数秩;
私有字符串名称;
公共播放器对象(int r,String n){
setRank(r);
集合名(n);
}
public int compareTo(PlayerObject-other){返回秩-other.rank;}
public int getRank(){return rank;}
public void setRank(int text){rank=text;}
公共字符串getName(){return name;}
public void setName(字符串文本){name=text;}
}
这可能会对您有所帮助。
class PlayerObject implements Comparable<PlayerObject> {
private int rank;
private String name;
public PlayerObject(int r, String n) {
setRank(r);
setName(n);
}
public int compareTo(PlayerObject other) { return rank - other.rank; }
public int getRank() { return rank; }
public void setRank(int text) { rank = text; }
public String getName() { return name; }
public void setName(String text) { name = text; }
}