如果我有一个对象列表,我想从多个类访问,我应该在哪里存储对象?

时间:2015-08-28 02:23:37

标签: java

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

我想从其他几个更多程序的类中访问这些对象。我的问题是我应该在哪个类中放置哈希表。我不想让它们反复从文件中读取。

我在处理这个问题时遇到了麻烦,所以如果有什么不清楚请问。感谢您的任何反馈或答案。

1 个答案:

答案 0 :(得分:2)

  

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

如果您只有用于存储数据的类,并且您的应用程序没有数据库(建议使用数据库),值得注意的是,如果您的应用程序在功能方面不断增加,将来无法管理Object中的所有数据。

  

我想从其他几个程序中访问这些对象,   类

好的如果多个类同时访问或尝试修改会怎样?如果是多线程,最好使用线程安全选项。是!您已使用Hashtable,但可能影响效果 ConcurrentHashMap是一个更好的选择。如果您正在使用单线程应用程序,则最好使用HashMap

  

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

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

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

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);
    }

}

注意:这只是一个示例,您可能需要根据具体情况使用它。