【发布时间】:2019-02-14 01:49:59
【问题描述】:
我有两个数组列表,例如
List<Integer> integerList = new ArrayList<>();
integerList.add(new Integer(1));
integerList.add(new Integer(2));
integerList.add(new Integer(3));
integerList.add(new Integer(4));
ArrayList<Integer> tempTableau = new ArrayList<Integer>();
for(int i = 0; i < integerList.size(); i++) {
if (i >= 1 && i < 4) {
tempTableau.add(integerList.get(i));
}
}
我想要实现的是如果我喜欢
tempTableau.set(1, new Integer(-2));
即改变一个数组中的值,它也应该反映另一个数组中的变化 或
System.out.println(integerList.get(2));
System.out.println(tempTableau.get(1));
都应该输出 -2。
【问题讨论】:
-
ArrayList<Integer> tempTableau = integerList;将创建对List的另一个引用。这就是你想要的吗? -
出于好奇,为什么?你确定这不是XY problem?
-
@GBlodgett 我正在解决一个问题,它通过从第一个数组中复制元素来创建另一个数组,但是如果我们更改第二个数组中的元素,它也应该更改第一个数组中的元素。与数组列表中对象的引用有关。这有可能吗?
-
@Gendarme这是我要解决的问题。我正在解决一个问题,它通过从第一个数组中复制元素来创建另一个数组,但是如果我们更改第二个数组中的元素,它也应该更改第一个数组中的元素。与数组列表中对象的引用有关。这有可能吗?
-
Integer(如String)是不可变的。您不能更改现有Integer对象的值,只能将对Integer的引用替换为对另一个Integer的引用。尝试查看AtomicInteger。您可以将对 AtomicInteger 的引用放入两个列表中,当您在一个列表中更改AtomicInteger内的整数时,它也会在另一个列表中更改。
标签: java arrays arraylist reference copy