问答详情
源自:4-8 学生选课—课程删除

我想重复添加课程:1 数据结构,为什么代码执行后显示添加的是课程:5 数学,并且遍历时能两次取得课程:1 数据结构

public void testAdd(){
			//创建一个课程对象,并通过调用add方法,添加到备选课程
			Course cr1=new Course("1", "数据结构");
			coursesToSelect.add(cr1);
			Course temp=(Course) coursesToSelect.get(0);
			System.out.println("添加了课程:"+temp.id+":"+temp.name);
			
			Course cr2=new Course("2", "C语言");
			coursesToSelect.add(0,cr2);
			Course temp2=(Course) coursesToSelect.get(0);
			System.out.println("添加了课程:"+temp2.id+":"+temp2.name);
			
			Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};
			coursesToSelect.addAll(Arrays.asList(course));
			Course temp3=(Course) coursesToSelect.get(2);
			Course temp4=(Course) coursesToSelect.get(3);
			System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+";"
					+temp4.id+":"+temp4.name+";");
			
			
			Course[] course2={new Course("5","数学"),new Course("6","语言")};
			coursesToSelect.addAll(2,Arrays.asList(course2));
			Course temp5=(Course) coursesToSelect.get(2);
			Course temp6=(Course) coursesToSelect.get(3);
			System.out.println("添加了两门课程:"+temp5.id+":"+temp5.name+";"
					+temp6.id+":"+temp6.name+";");
			
			//在此添加课程 1
			coursesToSelect.add(cr1);
			Course temp0=(Course) coursesToSelect.get(2);
			System.out.println("添加了课程:"+temp0.id+":"+temp0.name);
			
		}
		
		/**
		 * 取得List中元素的方法
		 * @param args
		 */
		public void testGet(){
			int size=coursesToSelect.size();
			System.out.println("有如下课程待选:");
			for(int i=0;i<size;i++){
				Course cr=(Course) coursesToSelect.get(i);
				System.out.println("课程:"+cr.id+":"+cr.name);
			}
		}
		
		public static void main(String[] args) {
			ListTest lt=new ListTest();
			lt.testAdd();//添加课程
			lt.testGet();//查询课程
		}
		
			


提问者:qq_蓝桉跑过少年时_03816386 2017-03-06 19:35

个回答

  • qq_李意成_0
    2017-03-06 20:28:46
    已采纳

    你目前用的是List接口,元素可以重复。首先你在第三个位置上添加的是 5:数学。所以当你重复添加 1:数据结构 时获取到的是当前位置上的数据  即 5:数学

    而实际你添加的是1:数据结构。