我有几个类来存储数据(DataClassA,DataClassB等)和每个类中的许多对象(objectA1,objectA2,objectB1,objectB2,objectB3等)。现在每个对象都有一个ID号,并将存储在适当的哈希表(hashtableA,hashtableB等)中。
我想从其他几个更多程序的类中访问这些对象。我的问题是我应该在哪个类中放置哈希表。我不想让它们反复从文件中读取。
我在处理这个问题时遇到了麻烦,所以如果有什么不清楚请问。感谢您的任何反馈或答案。
答案 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);
}
}
注意:这只是一个示例,您可能需要根据具体情况使用它。