当前位置: 首页 > 知识库问答 >
问题:

Android/Java中嵌套数组如何排序?

贺轶
2023-03-14

我有一个未排序的玩家数组,这些玩家通过 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",
    }
}]

我想以某种方式对此进行排序,以便我最终可以打印出玩家的姓名和他们的排名......但按顺序。

我考虑过可能将数组的结果放入TreeMap,但后来我意识到TreeMaps需要唯一的数组键,这行不通:

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

那么,有没有其他方法来完成这项工作呢?

共有1个答案

苍宜修
2023-03-14

在@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);

跟:

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; }
}
 类似资料:
  • 下面是一个java类CreateDoc,它从一个作为生产者端的web服务发送到另一个作为消费者端的web服务,其内容类型为:json 下面是类表示 一旦我在消费者端接收到作为json的列表,我就不能将其用作java对象,并且内容类型是数组,其中json嵌套在数组中。 以下是代表: 问题是如何处理这一点,并能够使用数据和表示为列表。

  • 问题内容: 我必须将下面嵌套的Json数组的数据解析到我的应用程序中。我很困惑如何从中获取价值。 任何人都可以指导我如何从中获取内部价值。 我已经试过了 问题答案: 这是我认为您的JSON解析器应为的样子(可能存在一些拼写错误,我没有在编辑器上测试此代码:)):

  • 问题内容: 如我们所知,通过使用方法将数组展平 那么如何将此数组展平到? 问题答案: 这是递归的一种替代方法,并且应接受任何深度级别,以避免堆栈溢出。

  • 我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和

  • 我有以下文件: 第一份文件: 第二份文件: 我知道如果我想按产品名称分组,我可以使用聚合 这将给我两个桶,两个不同的键“product1”,“product2”。 但是,如果我想按标记键分组,查询应该是什么?i、 e.我想按name==key1的标记分组,然后我希望有一个key=“value1”的bucket;而如果我按name==key2的标记分组,我希望结果是两个bucket,其键为“valu

  • < code>[[{header=C,value=dsd},{header=D,value=test},{header=E,value=e},{header=F,value=hhh},{header=G,value=ghgh}]] 上面是JsonLists数组的数组,我需要将外部数组扁平化为JsonLists的内部数组。 我最终也只会从JsonList中获取值,并将这些值放入它自己的单独数组中: