为了账号安全,请及时绑定邮箱和手机立即绑定

为什么获取get[0]就正确,获取get[1]就下标越界,不是已经添加了一个吗,不就相当于有两个了吗

public List courSelect;

public ListTest(){

this.courSelect = new ArrayList();

}

public void testAdd(){

Course co = new Course("1","java");

courSelect.add(co);

Course senm = (Course) courSelect.get(0);

System.out.println(senm.id

+senm.name);

Course se = new Course("0","sql");

courSelect.add(0, se);

Course sen = (Course) courSelect.get(0);

System.out.println(sen.id+ " : " +sen.name);

}

public static void main(String[] args){

ListTest li = new ListTest();

li.testAdd();

}


正在回答

4 回答

我简单回答一下。

add()方法中的数字,指的是添加位置。

get()方法中的数字,指的是要调用的位置。


add()方法的使用。初次往里面添加的话,添加位置只能是0位置,0可以省略不写的。  当第二次需要添加的时候,有两个添加位置,0位置和1位置。当你添加到0位置的时候,也就是把原本0位置存在的属性值,挤到了1位置。你也可以添加到1位置,这个时候1可以省略不写。每一次的添加都是对位置的从新排序。     当你需要第三次添加的时候,有0位置,1位置,2位置这样3个选择。选择最后一个位置的话,也就是2位置,2可以省略不写。选择1位置或者0位置就是把需要添加的属性值插进去,把原本存在的属性值挤到下一位。       上面所说的添加,指的是每次添加一个属性值。

get()方法的使用。括号里面的数字是几调用的就是几号位置的属性值。记住每一次添加都是对前面属性值的从新排序,调用几号位置,输出的就是几号位置的属性值。

这样应该是简单易懂吧

26分钟前



0 回复 有任何疑惑可以回复我~

Course co = new Course("1","java");

courSelect.add(co);

Course senm = (Course) courSelect.get(0);

这个get(1)会下标越界,因为你此时只添加了一个元素。


Course se = new Course("0","sql");

courSelect.add(0, se);

Course sen = (Course) courSelect.get(0);

这个get(1)不会有问题,而且get(1)得出的结果是("1","java")。

写了下标0,不会把之前那个挤掉,会把之前的挤到下一个位置1上

0 回复 有任何疑惑可以回复我~
#1

weixin_慕莱坞4034668 提问者

挤到下一个位置,那之前的写成get[1]不就可以吗,为什么报错,是因为还没执行下面,所以上面先写成get[1]的话就下标越界
2016-10-28 回复 有任何疑惑可以回复我~
#2

Sophia3119007 回复 weixin_慕莱坞4034668 提问者

嗯嗯,第一个写成get[1]肯定会越界的,因为下标是从0开始的。
2016-10-28 回复 有任何疑惑可以回复我~

第一个get[0],第二个get[1]应该不会报错吧,就是重复取出("1","java")。

0 回复 有任何疑惑可以回复我~
#1

weixin_慕莱坞4034668 提问者

为什么重复取("1","java")这个呢,不应该是get[0]取下面的,get[1]取这个吗("1","java")
2016-10-28 回复 有任何疑惑可以回复我~
#2

Sophia3119007 回复 weixin_慕莱坞4034668 提问者

嗯嗯,现在你这个程序应该输入的是("1","java"),("0","sql");我的意思是如果第二个get[0]换乘get[1]的话,应该输出的是("1","java"),("1","java"),应该报越界错误吧。
2016-10-28 回复 有任何疑惑可以回复我~
#3

Sophia3119007 回复 weixin_慕莱坞4034668 提问者

不好意思,上一条回复最后写错了,应该不会报越界错误吧!
2016-10-28 回复 有任何疑惑可以回复我~

因为你下面add进去的时候,写了下标0,所以把之前那个挤掉了把

0 回复 有任何疑惑可以回复我~
#1

weixin_慕莱坞4034668 提问者

不是吧,挤掉的话我之前的为什么还能输出出来呢
2016-10-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么获取get[0]就正确,获取get[1]就下标越界,不是已经添加了一个吗,不就相当于有两个了吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信