Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
如何在Android/Java中对嵌套数组进行排序?_Java_Android - Fatal编程技术网

如何在Android/Java中对嵌套数组进行排序?

如何在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,

我有一个未排序的玩家数组,通过JSON响应:

"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; }
}