Java get()返回指针而不是值?

Java get()返回指针而不是值?,java,arraylist,get,Java,Arraylist,Get,ArrayList.get(index)是否仅返回索引处元素的值或指向此元素的指针?我问这个问题是因为它没有像我期望的那样运行 List<List<Integer>> myList; myList = new ArrayList<>(Collections.nCopies(n, new ArrayList<>())); . . . List tempList = this.myLi

ArrayList.get(index)是否仅返回索引处元素的值或指向此元素的指针?我问这个问题是因为它没有像我期望的那样运行

List<List<Integer>> myList; 
myList = new ArrayList<>(Collections.nCopies(n, new ArrayList<>()));
           .
           .
           .
List tempList = this.myList.get(x);
tempList.add(i);
this.myList.set(i,tempList);
列出myList;
myList=newArrayList(Collections.nCopies(n,newArrayList());
.
.
.
List templast=this.myList.get(x);
圣殿骑士。添加(i);
这个.myList.set(我是圣殿骑士);

它不是将元素添加到索引x处的数组中,而是将新列表存储在索引i处,而是在两个点处追加元素,因此列表的大小不是增加的,而是最后一个元素的n倍,您看到的位置不正确

此代码绝对没有问题:

List tempList = this.myList.get(x);
tempList.add(i);
this.myList.set(i,tempList);
除此之外,它可以缩写为:

List tempList = this.myList.get(x);
tempList.add(i);
(除了您使用的是
列表
,这是一种原始数据类型,这也意味着您没有启用警告,但这是另一种情况。)

你的问题是:

myList = new ArrayList<>(Collections.nCopies(n, new ArrayList<>()));
myList=newarraylist(Collections.nCopies(n,newarraylist());
如果您查看
Collections.nCopies()
的实现,您将看到它在内部使用一个特殊列表,其中只包含一个元素,即您提供给它的元素,并且无论您请求哪个索引,它都会返回给您相同的原始元素


因此,您没有要开始的
n
列表;您只有一个列表。

您读过吗?看看这是否回答了您的问题。所有对象类型的Java变量都是引用,它们的行为非常类似于指针。我搜索了,但没有看到这个,谢谢