
本文介绍如何将 `list
在实际开发中,我们常会遇到类似 CollectiveInterestsRes 这样的响应类,其 targetInfo 字段定义为 List
targetInfo = [
{entertainment_interest_f=3.0},
{citizenship_s->America=3.0},
{tv_interest_f=3.0}
]注意:第二个键 citizenship_s->America 含特殊字符 ->,说明其键名本身可能包含业务上下文(如国家标识),并非标准命名;而 entertainment_interest_f 和 tv_interest_f 是我们要精准提取的规范字段。
✅ 推荐做法是合并归一化:遍历 targetInfo 列表,将所有子 Map 的键值对“合并”到一个统一的 HashMap 中。Java 8+ 可简洁实现:
List
⚠️ 关键注意事项:
- 键名必须精确匹配:citizenship_s->America ≠ citizenship_s,不可省略后缀;
- 空值防护:务必使用 getOrDefault(key, defaultValue) 或先判空,避免 NullPointerException;
- 性能与线程安全:若需高并发读写,可改用 ConcurrentHashMap,但本场景通常为单次解析,HashMap 足够高效;
-
扩展建议:长远来看,应推动接口方优化数据结构——例如改为 Map
targetInfo(直接扁平)或定义专用 DTO 类(如 InterestEntry),提升可读性与类型安全性。
通过这一轻量级扁平化策略,你无需修改原有类结构,即可以 O(n) 时间复杂度完成字段提取,兼顾代码简洁性与生产健壮性。










