首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我有一个要从多个类访问的对象列表,那么我应该将对象存储在哪里?

如果我有一个要从多个类访问的对象列表,那么我应该将对象存储在哪里?
EN

Stack Overflow用户
提问于 2015-08-28 02:23:37
回答 1查看 44关注 0票数 2

我有几个类来存储数据(DataClassA、DataClassB等)和每个类中的许多对象(objectA1、objectA2、objectB1、objectB2、objectB3等等)。现在,每个对象都有一个ID号,并将存储在适当的哈希表(hashtableA、hashtableB等)中。

我想从其他几个更程序化的类访问这些对象。我的问题是我应该放哪门课?我不希望他们被反复从文件中读出来。

我在这个问题的措辞上有困难,所以如果有什么不清楚的地方,请问。谢谢你的反馈或回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-28 02:44:53

我有几个类来存储数据(DataClassA、DataClassB等)和每个类中的许多对象(objectA1、objectA2、objectB1、objectB2、objectB3等等)。

如果您只有要存储数据的类,而您的应用程序没有数据库(建议使用数据库),则。值得注意的是,在将来的某个时候,如果应用程序的功能不断增加,您就不可能管理Object中的所有数据。

我想从其他几个更程序化的类访问这些对象。

好的,如果多个类同时访问它或尝试修改它,该怎么办?在多线程情况下,您应该更好地使用线程安全选项。是!您已经使用了Hashtable,但是这可能会影响性能,ConcurrentHashMap是一个更好的选择。如果您使用的是单线程应用程序,则最好使用HashMap

现在,每个对象都有一个ID号,并将存储在适当的哈希表(hashtableA、hashtableB等)中。

因此,您将在这里管理Object中的所有数据,并使用Id of Object将其存储到HashTable中。如果是单线程,您可以尝试以下方式,

创建一个父类Data,它应该由所有子数据类进行扩展。

代码语言:javascript
运行
复制
class Data {
    private Long id;//Unique id of Object by using some strategy to allocate unique 

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

public class DataUtils {

    //Created only once for whole application
    private static final Map<Long, Data> DATA_MAP = new HashMap<Long, Data>();

    public void addObjectToMap(Data data) {
        DATA_MAP.put(data.getId(), data);
    }

    public Data getData(Long id) {
        return DATA_MAP.get(id);
    }

}

注意:这只是一个例子,您可能需要相应地在您的情况下使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32262406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档