LinkedHashMap
com.google.gson.JsonArray用里面元素的id为key元素JsonObject为value且要记下每个元素本来的位置,用java集合实现:
可以使用LinkedHashMap来实现这个需求。
LinkedHashMap是基于哈希表实现的Map,但是同时维护一个插入顺序链表,可以保证元素的顺序与插入的顺序一致。
同时,将每个元素的位置作为value存储在JsonObject中,可以轻松获得每个元素本来的位置。
具体实现可以参考下面的代码:
1 import com.google.gson.JsonArray; 2 import com.google.gson.JsonElement; 3 import com.google.gson.JsonObject; 4 import java.util.LinkedHashMap; 5 6 public class JsonArrayExample { 7 public static void main(String[] args) { 8 JsonArray jsonArray = new JsonArray(); 9 10 // 添加元素到JsonArray 11 jsonArray.add(createJsonObject("id1", "value1")); 12 jsonArray.add(createJsonObject("id2", "value2")); 13 jsonArray.add(createJsonObject("id3", "value3")); 14 15 // 使用LinkedHashMap保存元素的位置和对应的JsonObject 16 LinkedHashMap<String, JsonObject> linkedHashMap = new LinkedHashMap<>(); 17 18 for (int i = 0; i < jsonArray.size(); i++) { 19 JsonElement jsonElement = jsonArray.get(i); 20 if (jsonElement.isJsonObject()) { 21 JsonObject jsonObject = jsonElement.getAsJsonObject(); 22 String id = jsonObject.get("id").getAsString(); 23 linkedHashMap.put(id, jsonObject); 24 } 25 } 26 27 // 遍历LinkedHashMap并打印结果 28 for (String id : linkedHashMap.keySet()) { 29 JsonObject jsonObject = linkedHashMap.get(id); 30 System.out.println("ID: " + id); 31 System.out.println("Value: " + jsonObject.get("value").getAsString()); 32 System.out.println("Original Position: " + jsonArray.indexOf(jsonObject)); 33 System.out.println(); 34 } 35 } 36 37 private static JsonObject createJsonObject(String id, String value) { 38 JsonObject jsonObject = new JsonObject(); 39 jsonObject.addProperty("id", id); 40 jsonObject.addProperty("value", value); 41 return jsonObject; 42 } 43 }
posted on 2023-05-19 23:02 SuperGuoYa 阅读(305) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧