今天寫**時發現了乙個很頭疼的問題,list在新增實體的時候,前面的值總是被後面的值覆蓋,最後的結果就是,在list中新增了很多重複的實體,非常頭疼,檢視資料後終於解決了這個問題,特此記錄
錯誤**如下
//例項化
entity entity = new entity();
//結果集合
listlist = new arraylist();
//通過遍歷id的集合查詢實體
for(int i = 0;i < idlist.size();i++)
當例項化物件entity時,jvm虛擬機會分配乙個固定的記憶體a來儲存這個物件,而entity則是指向這個記憶體a,
由於上面的**中物件是在迴圈外面例項化的,所以entity所指向的記憶體空間是沒有變的,所以在迴圈中操
作的物件實際上是同乙個,第一次迴圈時,在記憶體a儲存了一些值a,第二次迴圈時,在記憶體a儲存了值b
所以第一次儲存的值就被覆蓋了,導致迴圈結束後集合中的值都是重複的、
解決方法:
把物件的例項化在迴圈中進行,這樣每一次迴圈操作的都是不同的物件,值也就不會被覆蓋了
關於list中儲存map資料重複問題
以下兩段 中儲存的資料有所差異public static void main string args for int j 0 j list1.size j 第二組 list list2 new arraylist for int i 0 i list.size i for int j 0 j lis...
去掉list中的重複值
兩種方式,一種無順序,一種維持原list的元素順序。hastset根據hashcode判斷是否重複,資料不會重複 list order not maintained public static void removeduplicate arraylist arllist 通過hashset的add方...
刪除list中重複的值
方法一 迴圈元素刪除 刪除arraylist中重複元素 public static void removeduplicate list list system.out.println list 方法二 通過hashset剔除 刪除arraylist中重複元素 public static void r...