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

本文深入探讨了Java集合框架中的HashSet概念及其基本操作,通过创建学生类和实现学生选课功能,展示了如何使用HashSet进行课程管理。文章详细介绍了HashSet的特性和方法,包括添加、遍历等,特别强调了其无序性和元素不可重复性,并通过实例代码演示了如何在实际应用中灵活运用HashSet进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的用法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值