为什么我删除位置2的元素是大数学不是线性数学?

来源:4-8 学生选课—课程删除

yL_human

2016-03-19 23:45

package com.imooc;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

//备选课程类

public class ListTest {

//用于存放课程的书架

public List coursesToSelect;

public ListTest(){

this.coursesToSelect = new ArrayList();

}

//用于往课表里添加课程

public void testAdd(){

//创建课程对象,通过add方法添加课程到课程表里

Course cr1 = new Course("1","数据结构");

coursesToSelect.add(cr1);

//

Course temp = (Course)coursesToSelect.get(0);

System.out.println("添加了课程:"+temp.getId() +":"+ temp.getName());

Course cr2 = new Course("2","C语言");

coursesToSelect.add(0, cr2);

Course temp2 = (Course)coursesToSelect.get(0);

System.out.println("添加了课程:"+temp2.getId() +":"+ temp2.getName());

coursesToSelect.add(cr1);

//

Course temp0 = (Course)coursesToSelect.get(2);

System.out.println("添加了课程:"+temp0.getId() +":"+ temp0.getName());

//注释的方法会引起数组下标越界异常

// Course cr3 = new Course("3","test");

// coursesToSelect.add(3, cr3);

Course[] cr3 = {new Course("3","离散数学"),new Course("4","数学")};

coursesToSelect.addAll(Arrays.asList(cr3));

Course temp3 = (Course)coursesToSelect.get(3);

Course temp4 = (Course)coursesToSelect.get(4);

System.out.println("添加了课程:"+temp3.getId() +":"+ temp3.getName()+

temp4.getId() +":"+ temp4.getName());

Course[] cr4 = {new Course("5","线性数学"),new Course("6","大数学")};

coursesToSelect.addAll(2, Arrays.asList(cr4));

Course temp5 = (Course)coursesToSelect.get(2);

Course temp6 = (Course)coursesToSelect.get(3);

System.out.println("添加了课程:"+temp5.getId() +":"+ temp5.getName()+

temp6.getId() +":"+ temp6.getName());

}


//通过for each方法访问集合元素

public void testFof(){

System.out.println("有如下课程选择通过for each访问:");

for(Object obj : coursesToSelect){

Course cr = (Course) obj;

System.out.println("课程:"+cr.getId()+":"+cr.getName());

}

}

//删除list中的元素

public void testRemove(){

// Course cr = (Course) coursesToSelect.get(4);

System.out.println("即将删除4位置上的元素");

coursesToSelect.remove(4);

System.out.println("成功删除");

testFof();

//通过removeAll方法删除元素

Course[] courses = {(Course) coursesToSelect.remove(1)

,(Course) coursesToSelect.remove(2)};

coursesToSelect.remove(Arrays.asList(courses));

System.out.println("即将删除1和2位置的元素");

testFof();

}

public static void main(String[] args) {

ListTest lt= new ListTest();

lt.testAdd();

// lt.testGet();

// lt.testIt();

// lt.testFof();

// lt.testModify();

lt.testFof();

lt.testRemove();

}

}


写回答 关注

2回答

  • 脑洞有点多
    2016-03-20 12:08:01
    已采纳

    数组排序是从0开始的,你删除的2位置实际上是第三个数组元素,即大数学。

    yL_hum...

    我已经解决了,不过也是谢谢

    2016-03-21 12:21:23

    共 1 条回复 >

  • 四叶草r
    2016-03-20 18:29:30

    http://img.mukewang.com/56ee7b500001cd3104190147.jpg这应该是get()吧!

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409767 学习 · 4530 问题

查看课程

相似问题