java - Java 最佳实践:嵌套地图
问题描述
我需要为以下内容存储一个数据表:
ID、月份、值 1、值 2
我目前正在使用:
List<Map<String, Map<String, Integer>>>
为了便于阅读,我是否应该将其转换为以下内容:
List<ObjectA>
在哪里:
public ObjectA {
private ID;
private Map<String, ObjectB> map;
}
public ObjectB {
private int value1;
private int value2;
}
或者将它保留在基本的java列表和地图方面会更好吗?
解决方案
您绝对应该创建一个新对象并将条目存储在对象列表或映射中,具体取决于 ID 的重要性及其类型。
主要原因是可读性。替代方案不仅相当不雅,而且也很难阅读和理解。此外,它的扩展性极差:如果您的对象不仅有 3-4 个属性,还有 10 个属性怎么办?
另一个原因是语义。假设数据来自表格形式(例如关系数据库),表格应该代表一个实体,每个条目代表各种实体的属性。如果您不使用自定义对象,您就会失去“实体”和“适当性”的概念。
在某些情况下,当属性(成员)具有相同类型时,可以选择映射。从开发的角度来看可能更容易,仍然捕获了“属性”的一些可读性,并且如果它包含在限制访问的对象中(例如只读,不要错误插入其他属性),可以有一个体面的安全。
推荐阅读
- react-native - 为什么 CodePush OTA 更新我的字体?
- ruby-on-rails - 警告:在 ruby 2.7.3 中不推荐使用最后一个参数作为关键字参数
- python - 我的 Lambda AWS KeyError 代码中有这个问题
- vega-lite - Vega-Lite 分箱折线图
- python - 改变顺序时不同的pandas DataFrame逻辑运算结果
- graphql - 即使附加了令牌,Github graphq api也会给出401
- xpath - XPath 1.0 获取子记录
- c# - 一对一关系实体框架和 .NET
- angular - 使用 ControlAccessValue 制作的角度子表单中的 PatchValue 导致父表单状态为脏
- swift - SwiftUI - 如何在状态中构造关系数据