问答详情
源自:4-5 学生选课---添加课程 Ⅱ

为什么获取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();

}


提问者:weixin_慕莱坞4034668 2016-10-28 11:14

个回答

  • 历飞雨
    2016-12-20 22:09:29

    我简单回答一下。

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

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


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

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

    这样应该是简单易懂吧

    26分钟前



  • 静静07
    2016-10-28 15:43:27

    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上

  • Sophia3119007
    2016-10-28 15:37:23

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

  • 慕仙9853964
    2016-10-28 15:32:07

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