首页 > 解决方案 > 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列表和地图方面会更好吗?

标签: java

解决方案


您绝对应该创建一个新对象并将条目存储在对象列表或映射中,具体取决于 ID 的重要性及其类型。

主要原因是可读性。替代方案不仅相当不雅,而且也很难阅读和理解。此外,它的扩展性极差:如果您的对象不仅有 3-4 个属性,还有 10 个属性怎么办?

另一个原因是语义。假设数据来自表格形式(例如关系数据库),表格应该代表一个实体,每个条目代表各种实体的属性。如果您不使用自定义对象,您就会失去“实体”和“适当性”的概念。

在某些情况下,当属性(成员)具有相同类型时,可以选择映射。从开发的角度来看可能更容易,仍然捕获了“属性”的一些可读性,并且如果它包含在限制访问的对象中(例如只读,不要错误插入其他属性),可以有一个体面的安全。


推荐阅读