list
peoplelist =
newarraylist()
;people people =
newpeople()
;for
(int i =
0; i <
10; i++
)//輸出結果都是
//id10
//age10
sout
(peoplelist)
;
問題的產生在於,物件。物件中儲存的都是位址。
people 物件在迴圈前,便新建成功,分配了記憶體空間,不再發生變化。
每次賦值的過程,都是在同乙個記憶體空間,更改儲存的位址。
;//其中,list 中儲存的是,people 這個物件。
//在迴圈賦值的過程中,people 中的儲存的值(所指向的位址)一直在發生變化。
for(
int i =
0; i <
10; i++
)所以最後存入 list 中的物件,都是最後輸入的屬性
list
peoplelist =
newarraylist()
;for
(int i =
0; i <
10; i++
)sout
(peoplelist)
;
此時,每次迴圈都會新建乙個物件,分配乙個新的記憶體空間。
關於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集合儲存物件,存的都是最後乙個輸入的值 public class user public static void main string args system.out.println list.tostring 結果顯示 user id 0 user id 1 user id 2 user...
STL中儲存的元素都是按照值拷貝得來的
理論提高 所有容器提供的都是值 value 語意,而非引用 reference 語意。容器執行插入元素的操作時,內部實施拷貝動作。所以stl容器內儲存的元素必須能夠被拷貝 必須提供拷貝建構函式 c.size 返回容器中元素的個數 c.empty 判斷容器是否為空 c1 c2 判斷c1是否等於c2 c...