List 中儲存的物件資料,都是最後存入的值

2021-10-09 08:01:38 字數 1037 閱讀 1346

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...