Java(十三)--Set的添加,删除,修改

Set即集合,有着无序性,不可重复性等特性。HashSet是Set的重要实现类,哈希集 同List相同,有add(),addAll(),remove(),removeAll(),size()等方法,但没有set(),get()方法,(以上方法都没有写参数)。因为Set有无序性,所以不能通过下标来获取元素。只能通过Iterator和for方法 接上个程序(Course),这次创建学生类

import java.util.*;

/*
 * 学生类
 */
public class Student {
    public String id;
    public String name;
    public Set<Course> courses;

    Student(String newId,String newName){
        id=newId;
        name=newName;
        courses=new HashSet<Course>();
    }
}

学生类中有Set,已选课程 新建一个测试类SetTest,其中有属性coursesToSelect(List)作为备选课程

import java.util.*;
public class SetTest {

    public List<Course> coursesToSelect;

    public SetTest(){
        coursesToSelect=new ArrayList<Course>();
    }

    /*
     *将课程添加到List中去
     *同上个教程的添加方法
     */
    public void testAdd(){
        //创建一个课程对象,并通过add方法添加List中
        Course cr1=new Course("1","数据结构");
        coursesToSelect.add(cr1);


        Course cr2=new Course("2","C");
        coursesToSelect.add(0,cr2);


        Course[] course={
         
  new Course("3","离散数学"),new Course("4","汇编语言")};
        coursesToSelect.addAll(Arrays.asList(course));


        Course[] course2={
         
  new Course("5","高等数学"),new Course("6","大学英语")};
        coursesToSelect.addAll(2,Arrays.asList(course2));
    }


     /*
      *遍历输出课程
      */
        public void testForEach(){
            System.out.println("添加了如下课程(通过foreach)");
            for(Object obj: coursesToSelect){
                Course cr=(Course)obj;
                System.out.println("添加了课程:"+cr.id+":"+cr.name);         
            }
        }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SetTest st=new SetTest();
        st.testAdd();
        st.testForEach();
        //新建学生对象
        Student student=new Student("1","小明");
        System.out.println("welcome"+student.name+"选课");
        //选课,通过输入ID与List中的id对应
        Scanner console=new Scanner(System.in);
        for(int i=0;i<3;i++){
            System.out.println("请输入课程ID");
            String courseId=console.next();
            for(Course cr:st.coursesToSelect){
                if(cr.id.equals(courseId)){
                    student.courses.add(cr);
                    //student.courses.add(cr);//set中元素不可重复,重复添加只添加一次
                }
            }
            Course[] course1={
         
  new Course("1","数据结构"),new Course("2","C"),new Course("3","离散数学")};
            student.courses.addAll(Arrays.asList(course1));
        }
        st.testForEachForSet(student);
    }
    public void testForEachForSet(Student student){
        //打印输出课程
        System.out.println("供选择了:"+student.courses.size()+"门课程");
        for(Course cr: student.courses){
            System.out.println("选择了课程:"+cr.id+":"+cr.name);
        }
    }
}

由上面代码看出,Set的初级用法(添加)和List并没有多大区别,但是如何添加一个数组还没学会。(addAll的用法)

经验分享 程序员 微信小程序 职场和发展