拷貝list集合中物件的字段

2021-10-24 14:13:35 字數 3657 閱讀 9199

需要從listcopy到list中。其中a類和b類擁有相同的字段(或者是部分字段相同)
這是第乙個a類----sysmessage類

public class sysmessage 

public void setid(string id)

public string getid()

public void setsubject(string subject)

public string getsubject()

public void setownerid(string ownerid)

public string getownerid()

public void setowner(string owner)

public string getowner()

public void setmessagetype(string messagetype)

public string getmessagetype()

public void setcreatetime(date createtime)

public date getcreatetime()

public void setcanreply(short canreply)

public short getcanreply()

public void setispublic(short ispublic)

public short getispublic()

public void setcontent(string content)

public string getcontent()

public void setfilemsg(string filemsg)

public string getfilemsg()

public date getreceivetime()

public void setreceivetime(date receivetime)

public string getreceivername()

public void setreceivername(string receivername)

public string getreceiverorgname()

public void setreceiverorgname(string receiverorgname)

public string getreceiverid()

public void setreceiverid(string receiverid)

public string getreceiverorgid()

public void setreceiverorgid(string receiverorgid)

public string getrid()

public void setrid(string rid)

public string tostring()

}

這是第二個b類------message 

public class message 

public void setid(string id)

public string getsubject()

public void setsubject(string subject)

public string getownerid()

public void setownerid(string ownerid)

public string getowner()

public void setowner(string owner)

public string getmessagetype()

public void setmessagetype(string messagetype)

public date getcreatetime()

public void setcreatetime(date createtime)

public short getcanreply()

public void setcanreply(short canreply)

public short getispublic()

public void setispublic(short ispublic)

public string getcontent()

public void setcontent(string content)

public string getfilemsg()

public void setfilemsg(string filemsg)

public string getreceivername()

public void setreceivername(string receivername)

public date getreceivetime()

public void setreceivetime(date receivetime)

public string getreceiverid()

public void setreceiverid(string receiverid)

public string getreceiverorgname()

public void setreceiverorgname(string receiverorgname)

public string getreceiverorgid()

public void setreceiverorgid(string receiverorgid)

public string getrid()

public void setrid(string rid)

}

現在有乙個  listmessages。為我們需要把messages的資料複製到 listmessagelist中去。有兩種方法。

1.使用json轉化成字串(string),再反序列化成list。

/**

* 從listcopy到list* @param list list* @param clazz b

* @return list*/

public listcopy(list<?> list,classclazz)

2.beanutils.copyproperties(object dest, object orig)方法

/**

* 從listcopy到list* @param list list* @param clazz b

* @param string s 佔位引數

* @return list*/

public listcopy(list<?> list,classclazz,string s) throws exception

return tlist;

}

相比於第一種方式,通過迴圈建立物件的方式適合於資料量較多時或者是請求的數量較少,第一種建立了string類的常量,會形成常量池,請求較多則會直接訪問常量池,能節省時間。但是第一次請求時第二種方式較快。

list集合的深拷貝和淺拷貝

淺拷貝是平常用的最多的,比如 源list list srclist new arrarylist 目標list list list new arrarylist list.addall srclist collections.copy list,srclist 淺拷貝拷貝的是list的位址,所以改變...

C 中List物件的深度拷貝問題

一 list物件中的t是值型別的情況 int 型別等 對於值型別的list直接用以下方法就可以複製 listoldlist new list oldlist.add listnewlist new list oldlist 二 list物件中的t是引用型別的情況 例如自定義的實體類 1 對於引用型別...

list集合去除重複物件

物件重複是指物件裡面的變數的值都相等,並不定是位址。list集合儲存的型別是基礎型別還比較好辦,直接把list集合轉換成set集合就會自動去除。當set集合儲存的是物件型別時,就需要在物件的實體類裡面重寫public boolean equals object obj 和 public int ha...