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) );

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值