簡體   English   中英

兩個列表如何共享同一個對象?

[英]How do two lists share the same object?

有一個名為 position 的 object; 有兩個 ArrayList,分別命名為 list1 和 list2;

我想將 position 添加到兩個列表中。 如何更改 list1 中的 position 以影響 list2 中的 position?

If you add the same Position object into both lists, than any changes you make to one will apply to the other as well, because they are the same object and therefore point to the same memory address.

例如,考慮具有 x 和 y 屬性的 object Position:

Position p1 = new Position(0,0); 

ArrayList<Position> positions_1 = new ArrayList<Position>();
ArrayList<Position> positions_2 = new ArrayList<Position>();
ArrayList<Position> positions_3 = new ArrayList<Position>();

positions_1.add(p1);
positions_2.add(p1);
positions_3.add(p1);

System.out.println(p1.toString());     //X = 0, Y = 0
System.out.println(positions_1.get(0); //X = 0, Y = 0
System.out.println(positions_2.get(0); //X = 0, Y = 0
System.out.println(positions_3.get(0); //X = 0, Y = 0

p1.setX(1);
positions_1.get(0).setY(1);

System.out.println(p1.toString());     //X = 1, Y = 1
System.out.println(positions_1.get(0); //X = 1, Y = 1
System.out.println(positions_2.get(0); //X = 1, Y = 1
System.out.println(positions_3.get(0); //X = 1, Y = 1

說明:由於所有列表共享相同的 object p1 ,如果它發生任何更改,所有列表都會修改此 object ,因為“幕后”只有一個 objectZZZZ 在不同的地方引用。

暫無
暫無

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

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