簡體   English   中英

java克隆深拷貝HashMap

[英]java clone deep copy HashMap

在我的Web應用程序中,我必須將相同的數據從DB引入到webapplicatio中,這需要很多時間。 我所做的是,我獲取了數據並將其放入HashMap中。 這樣,我不必每次都將其帶入Web應用程序。 但是最大的問題是,所有用戶都將對他們更改的相同數據進行操作。 我的第一個問題是:將來自數據庫的數據保存到HashMap中是否正確,所以我不必每次都從數據庫查詢數據? 我的第二個問題是,如果可以使用HashMap保存數據,則必須對引入和放入HashMap的數據進行深層復制或克隆,以便每個用戶都有原始數據的副本。 對?

我要克隆的對象是一個傳輸對象,它具有對其他Object和HashMaps的引用。 流程是這樣的:首先從DB中獲取數據,創建類,然后將所有類放入傳輸對象,然后將該傳輸對象放入哈希映射。 下次,從hashmap帶來數據。

多謝您的協助。 編輯:來自DB的數據將創建一個在線表單,並具有默認值,例如名稱,地址和性別...所有用戶都必須出於自己的目的編輯表單。 這樣,每個用戶都必須擁有自己的副本才能對其進行操作。

深度克隆的一種非常簡單的方法是序列化/反序列化對象。 僅當哈希圖中的所有鍵/值都實現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());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM