Java中如何将java.util.ArrayList类型的SQL查询结果转为字典
Java 扁平化ArrayList转键值对Map方案
Java 中对应 Python 字典的结构为java.util.Map接口,无需保留键顺序可使用HashMap实现类,需要保留原列表插入顺序可使用LinkedHashMap实现类,针对你返回的两两一组扁平化结构的ArrayList,可按以下逻辑实现转换:
基础实现代码
首先导入所需依赖:
import java.util.ArrayList; import java.util.HashMap; import java.util.Map;
核心转换逻辑:
// 替换为你从JBPM获取到的查询结果ArrayList变量 ArrayList<Object> jbpmQueryList = 你的查询结果变量; Map<String, Integer> resultMap = new HashMap<>(); // 步长为2遍历列表,每次取一组键值对 for (int i = 0; i < jbpmQueryList.size(); i += 2) { String key = (String) jbpmQueryList.get(i); // 根据实际返回值的类型做转换,此处默认值为数字类型 Integer value = ((Number) jbpmQueryList.get(i + 1)).intValue(); resultMap.put(key, value); }
取值方式和Python字典逻辑一致:
Integer mathScore = resultMap.get("math"); Integer physicsScore = resultMap.get("physics"); Integer biologyScore = resultMap.get("biology");
健壮性优化版本
增加前置校验避免运行时异常:
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class QueryResultConverter { public static Map<String, Integer> convertListToMap(ArrayList<Object> queryList) { // 空列表校验 if (queryList == null || queryList.isEmpty()) { throw new IllegalArgumentException("查询结果列表不可为空"); } // 元素数量成对校验 if (queryList.size() % 2 != 0) { throw new IllegalArgumentException("查询结果列表元素数量不为偶数,无法完成键值对转换"); } Map<String, Integer> resultMap = new HashMap<>(); for (int i = 0; i < queryList.size(); i += 2) { String key = (String) queryList.get(i); Integer value = ((Number) queryList.get(i + 1)).intValue(); resultMap.put(key, value); } return resultMap; } }
注意事项
- 若返回结果中的值为String格式的数字,可将值转换逻辑修改为
Integer.valueOf((String) queryList.get(i+1)) - 若需要保留原列表中的键值对顺序,只需将
new HashMap<>()替换为new LinkedHashMap<>()即可
内容的提问来源于stack exchange,提问作者user14073111
相关产品推荐
相关产品推荐

