首先定义了一个课程类,里边放一些有关课程的属性和方法
package Chen_collection;
/*
* 课程类
*/
public classCourse {
private Stringid;
private Stringname;
public void Set_id(String i){
id=i;
}
public void Set_name(String j){
name=j;
}
public String get_id(){
returnid;
}
public String get_name(){
returnname;
}
public Course(Stringi,String n){
id=i;
name=n;
}
public Course(){
}
}
然后定义了一个学生类,里边存放学生的一些属性和方法
package Chen_collection;
import java.util.Set;
import java.util.HashSet;
public class Student {
privateString id;
privateString name;
publicSet<Course> courses;
publicString get_id(){
returnid;
}
publicString get_name(){
returnname;
}
publicStudent(String i,String n){
id=i;
name=n;
courses=newHashSet<Course>();
}
}
然后下边就是同过Set接口实现对学生选择的课程进行增、删、查、改。
package Chen_collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
/*
* 下面说Set接口及其实现类HashSet
* Set是元素无序并且不可以重复的集合,被称为集
* HashSet-----哈希集,是Set的一个重要实现类
*
* 下面是案例功能说明
* (1)提供备选课程
* (2)创建学生对象,并给该学生添加三门课程(添加在学生的courses----Set类型的属性中)(因为之前我们已经在学生类中创建了Set的courses)
* 显示备选课程
* 循环三次,每次输入课程ID
* 往学生的courses属性中添加与输入的ID匹配的课程
* 输出学生选择的课程
*/
public classSetTest {
public List<Course>courseToSelect;
public SetTest(){
courseToSelect=newArrayList<Course>();
}
public void testAdd(){
//创建一个课程对象,并通过调用add()方法,添加到备选课程课程List中
Coursecr1=new Course("1","数据结构");
courseToSelect.add(cr1);
//Course temp=courseToSelect.get(0);//因为只在里边添加了一个元素,而List和数组一样,也是从0开始的
//这里会报错是因为,对象存入集合,都变成Object类型,取出时需要用类型转换
//Course temp=(Course)courseToSelect.get(0);//因为只在里边添加了一个元素,而List和数组一样,也是从0开始的
//System.out.println("添加了一个课程:"+temp.get_id()+":"+temp.get_name());
Course[]temp1={new Course("3","离散数学"),new Course("4","大学英语")};
courseToSelect.addAll(Arrays.asList(temp1));
//Course cour1=(Course)courseToSelect.get(1);
//Course cour2=(Course)courseToSelect.get(2);
//System.out.println("添加了两门课程:"+cour1.get_id()+":"+cour1.get_name()+";"+cour2.get_id()+
//":"+cour2.get_name());
}
public void forEach(){
for(Objectobj:courseToSelect){
Courseb=(Course)obj;
System.out.println("课程"+b.get_id()+":"+b.get_name());
}
}
public static void main(String[] args) {
SetTestC=new SetTest();
C.testAdd();
C.forEach();
//创建一个新的学生对象
Studentstudent=new Student("1","小明");
System.out.println("欢迎学生"+student.get_name()+"选课");
//创建一个Scanner对象,用来接收从键盘输入的ID
Scannerconsole=new Scanner(System.in);
for(inti=0;i<3;i++){
System.out.println("请输入课程ID");
StringcourseID=console.next();
for(Coursecr:C.courseToSelect){
if(cr.get_id().equals(courseID)){
student.courses.add(cr);
//student.courses.add(cr);//相当于添加了两次,而我们说过Set中的元素不重复,我们重复输入则可证明这个,当加上这条语句时输出的仍然是三个
}
}
}
C.testForEachSet(student);
}
public void testForEachSet(Student student){
//打印输出学生所选的课程
System.out.println("共选择了"+student.courses.size()+"门课程");
for(Coursecr:student.courses){
System.out.println("选择了课程"+cr.get_id()+":"+cr.get_name());
}
}
}