在我的 web 应用程序中,我必须将相同的数据从 DB 导入到 web 应用程序中,这需要花费很多时间。 我所做的是,我获取数据并将其放入 HashMap 中。这样我就不必每次都将它带入网络应用程序。但最大的问题是,所有用户都将对他们更改的相同数据进行操作。 我的第一个问题是:把DB带来的数据保存在HashMap中,这样就不用每次都去DB查询了,这样对吗? 我的第二个问题是,如果我可以使用 HashMap 来保存数据,我必须对引入并放入 HashMap 中的数据进行深度复制或克隆,这样每个用户都有一份原始数据的副本。对吧?
我要克隆的对象是一个传输对象,它引用了其他对象和 HashMap。 过程是这样的:首先从数据库中获取数据,创建类并将所有类放入一个传输对象中,然后将该传输对象放入一个 HashMap 中。下次把hashmap的数据带过来。
感谢您的帮助。 编辑:来自数据库的数据创建了一个在线表格,并具有默认值,如姓名、地址和性别……所有用户都必须根据自己的目的编辑表格。这样每个用户都必须有自己的副本才能对其进行操作。
最佳答案
深度克隆的一种非常简单的方法是序列化/反序列化对象。只有当你的 hashmap 中的所有键/值都实现 java.io.Serializable
时,这才会起作用。
例如:
public <T extends Serializable> T deepClone(T o) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(o);
out.flush();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(byteOut.toByteArray());
return o.getClass().cast(in.readObject());
}
关于java克隆深拷贝HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21752771/