gpt4 book ai didi

java - 使用单个 for 循环对 JSONArray 进行排序

转载 作者:行者123 更新时间:2023-12-02 01:27:20 24 4
gpt4 key购买 nike

我有一个包含 5 个不同 JSONObject 的 JSONArray,并且这 5 个 JSONObject 中的每一个都有一个标识符字符串值。这五个值是“aa”、“bb”、“erer”、“cc”、“gg”。我的要求是将标识符为“erer”的 JSONObject 放在第一位,并且以下 JSONObject 可以按任何顺序排列。json 是:

{
"obj":[
{"identifier":"aa",},
{"identifier":"bb",},
{"identifier":"erer",},
{"identifier":"cc",},
{"identifier":"gg",}
]
}

最终结果必须是“erer”、“aa”、“bb”、“cc”、“gg”,我需要在一个循环中执行此操作。

我可以通过两个循环来完成此操作。

for (int i = 0; i < jsonArray.length(); i++) {
JSONObject j = jsonArray.getJSONObject(i);
if(j.getString("identifier").equals("erer")) {
sortedJson.put(joPayLoad);
}
}
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject j = jsonArray.getJSONObject(i);
if(!j.getString("identifier").equals("erer")) {
sortedJson.put(joPayLoad);
}
}

但是 JsonArray 也可能有 10,000 个 JSONObject。因此,这个“两个 for 循环”会导致性能滞后。因此,请帮助我在一个循环中实现上述要求。提前致谢!

最佳答案

鉴于 JsonArray 是一个列表 ( source ),您可以尝试将值与 erer 交换为新的第一个元素:

for (int i = 0; i < jsonArray.length(); i++) {
JsonValue j = jsonArray.get(i);
if(j.getString("identifier").equals("erer")) {
JsonValue tmp = jsonArray.get(0);
jsonArray.set(0, j);
jsonArray.set(i, tmp);
break;
}
}

因为我没有安装 EE,所以没有尝试过,但也许你可以使用提供的方法使其工作。

关于java - 使用单个 for 循环对 JSONArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com