Java学生选课实例之修改

course.java

package com.imooc.collection;
/*
 * 课程类
 */
public class course {
	
	public String id;
	
	public String name;

	public course(String id,String name){
		this.id=id;
		
		this.name=name;
	}
}

student.java

package com.imooc.collection;
import java.util.HashSet;
import java.util.Set;
/*
 * 学生类
 * 
 */
public class student {
	
	public String id;
	
	public String name;
	
	public Set courses;
	
	public student(String id,String name){
		this.id=id;
		this.name=name;
		this.courses=new HashSet();
	}
	
}

ListTest.java

package com.imooc.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/*
 * 备选课程类
 */
public class ListTest {
	/*
	 * 用于存放备选课程的List
	 */
	public List<course> coursesToSelect;
	
	public ListTest (){
		this.coursesToSelect = new ArrayList<course>();
	}
	/*
	 * 用于往courseToSelect中添加备选课程
	 */
	public void TestAdd(){
		
		course cr1 = new course("1","数据结构");
		coursesToSelect.add(cr1);
		course temp1 = (course)coursesToSelect.get(0);
		System.out.println("添加了课程:"+temp1.id+temp1.name);
		
		course cr2 = new course("2","C语言");
		coursesToSelect.add(1,cr2);
		course temp2 = (course)coursesToSelect.get(0);
		System.out.println("添加了课程:"+temp2.id+temp2.name);

		coursesToSelect.add(cr1);
		course temp0 = (course)coursesToSelect.get(2);
		System.out.println("添加了课程:"+temp0.id+temp0.name);
		
		course cr3 = new course("3","Java语言");
		coursesToSelect.add(2,cr3);
		course temp3 = (course)coursesToSelect.get(1);
		System.out.println("添加了课程:"+temp3.id+temp3.name);
		
		course[] cour1 = {new course("4","离散数学"),new course("5","汇编语言")};
		coursesToSelect.addAll(3,Arrays.asList(cour1));
		course temp4 = (course)coursesToSelect.get(2);
		course temp5 = (course)coursesToSelect.get(3);
		System.out.println("添加了两门课程"+temp4.id+temp4.name+temp5.id+temp5.name);
		
		course[] cour2 = {new course("6","高等数学"),new course("7","线性代数")};
		coursesToSelect.addAll(3,Arrays.asList(cour2));
		course temp6 = (course)coursesToSelect.get(2);
		course temp7 = (course)coursesToSelect.get(3);
		System.out.println("添加了两门课程"+temp6.id+temp6.name+temp7.id+temp7.name);
		
		course[] cour3 = {new course("8","高等数学"),new course("9","线性代数")};
		coursesToSelect.addAll(3,Arrays.asList(cour3));
		course temp8 = (course)coursesToSelect.get(2);
		course temp9 = (course)coursesToSelect.get(3);
		System.out.println("添加了两门课程"+temp8.id+temp8.name+temp9.id+temp9.name);
		
	}
	
	/*
	 * 	通过for循环取得List中的元素的方法
	 * 
	 */
	public void testGet(){
		int size = coursesToSelect.size();
		System.out.println("有如下课程待选(for访问)");
		for(int i = 0 ; i < size ; i++){
			course cr = (course)coursesToSelect.get(i);
			System.out.println(cr.id+cr.name);
		}
	}

	/*
	 * 通过iterator取得List中的元素的方法
	 * 迭代器依赖集合存在
	 */
	public void  testIterator(){
		Iterator it = coursesToSelect.iterator();
		System.out.println("有如下课程待选(迭代器访问)");
		while(it.hasNext()){
			course cr = (course)it.next();
			System.out.println(cr.id+cr.name);
		}
	}
	
	/*
	 * 通过foreach取得List中的元素的方法
	 * 
	 */
	public void  testForEach(){
		System.out.println("有如下课程待选(foreach访问)");
		for(Object obj : coursesToSelect){//把集合中每个元素取出来作为一个object用
			course cr = (course)obj;
			System.out.println(cr.id+cr.name);
		}
	}
	
	/*
	 * 修改List中的元素
	 */
	public void testModify(){
		coursesToSelect.set(4,new course("7","毛概"));
	}
	
	public static void main(String[] args){
		ListTest lt = new ListTest();
		lt.TestAdd();
		lt.testGet();
		lt.testIterator();
		lt.testForEach();
		lt.testModify();
		lt.testForEach();
	}
}

这是前后的数据对比,测试了好几次数据有点理解这个ADDALL

先把数据通过add(int index , course &c),我们把存储的位置看做是数组,但是只能访问(0,coursesToSelect.size()),如果index指向的位置是在数据中间,那就插入后把这个位置以及这个位置之后(后来添加)的全部位置+1,然后是addAll,每次加入两个

这个情况是对应着如下的输出结果

我们着重看一下3,4,5课程的输出,首先上面在 addAll下面的get,println都是打印出了理想的效果,我们第一个addAll是在3号位置,然后temp依次get,在这时的get(3),get(4),向我们表明课程是按顺序插入的,值得注意的是我们的addAll插入几位下面的插入就要顺延几位

猜你喜欢

转载自blog.csdn.net/qq_40354578/article/details/89224751