ArrayList 用 get(i) 访问元素时可能遇到的问题 (required: variable, found: value)

今天在leetcode上遇到了这样一个问题,这个错也是头一次碰到,故总结如下。

如我们所知,ArrayList不能像数组一样用下标来访问内部元素,通常我们的做法是用get()方法做平替,但是二者其实并不是等价的,我们上述出现的问题就是由此导致。

错误的代码:

//res是一个二维ArrayList
res.get(i).get(left) =  res.get(i).get(right);

报出的错误原因:

                required: variable

                found: value

他的意思是,这里需要一个“变量”,但在该位置却找到了一个“值”,所以赋值操作无法完成。

对此我的理解是,get方法返回的是该对象的引用,这个引用本质上就是一个地址,我们可以通过这个地址来获取这个对象,使用它的方法,但是我们不能对这个引用做“再赋值” , 所以这个返回值我们只能让其作为右值,而不能是左值

所以说,通过get()方法来给集合元素赋值是不正确的!!


上面搞清楚了问题的原因,下面来看解决方法:

list接口中其实还有一个set( index,element ) 方法,用来设置或更新容器内index位置上的元素值,其中index是int类型,element是list实例化的时候自定义的类型

综上,对我们出错的代码做如下修改问题就解决了:

res.get(i).set(left , res.get(i).get(right) );

有说的不对的地方还请大家指正。祝好!


版权声明:本文为qq_47273708原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。