《JAVA集合中的Set接口》

时间:2021-01-27 16:16:39

首先定义了一个课程类,里边放一些有关课程的属性和方法

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类型的属性中)(因为之前我们已经在学生类中创建了Setcourses

 * 显示备选课程

 * 循环三次,每次输入课程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());

        }

    }

}