• 集合(4)—Collection之Set的使用方法


    1. 定义

      • set接口及其实现类–HashSet
      • Set是元素无序且不可重复的集合,被称为集。
      • HashSet是哈希集,是Set的一个重要实现类
      • set中循环只能使用foreach和iterator这两个,而没有get()方法
      • set中无论添加某个对象多少次,最终只会保留一个该对象 的引用,并且保留的是第一次添加的那个。
      • set中add()、addAll()、remove()、removeAll()方法和List中使用方法一样
    2. 实现类
      HashSet()
      特点:
      • 不能保证元素的排列顺序,顺序有可能发生变化。
      • 另外HashSet不是同步的,如果多个线程同时访问一个Set,只要有一个线程修改Set中的值,就必须进行同步处理,通常通过同步封装这个Set的对象来完成同步,如果不存在这样的对象,可以使用Collections.synchronizedSet()方法完成。
        Set s = Collections.synchronizedSet(new HashSet(…));
      • 元素值可以是null。
    3. 使用方法
      • 定义:
    public class Student {
    
        public String id;
        public String name;
        public Set<Course> courses;//Set接口定义了只能存储课程类型的变量(courses),用于存储学生所选课程
        public Student(String id,String name){
            this.id=id;
            this.name=name;
            this.courses = new HashSet<Course>();           //HashSet是Set接口的一个重要实现类
        }
    }
    
    Student students = new Student();//创建Student类对象
    
    • 添加元素:
    student.courses.add(new Course("12","as"));     //如果一样就把这个元素(课程对象)添加到Student类course属性中
    • 删除Set中元素
      首先创建一个List类型变量,把set类型变量使用addAll()方法存到List集合变量中去,再使用remove()方法删除
    //存储学生选课后存到Set类型变量courses中的元素,用于删除courses中的元素
    List<Course> coList = new ArrayList<Course>();
    
    //删除学生已选课程需要把学生课程这个属性放到集合coList中去
    coList.addAll(student.courses);
    
    //再获取指定课程的位置(位置从0开始),再使用remove删除。
    student.courses.remove(coList.get(元素位置));
    
    • 打印输出
    for (Course cr : student.courses) {
        System.out.println("选择了课程:"+cr.id+" "+cr.name);
    }
    • 其他方法和List一致,大家可以自己去验证
  • 相关阅读:
    echarts柱状图实现多条不同颜色渐变
    vue echarts 点击左侧菜单,宽度无法自适应,且支持 窗口大小改变echarts图自适应
    element 单列查询
    js实现双向数据绑定,vue v-model原理
    css3 nth-child使用
    基于工程实践选题的对同类软件产品的调研分析
    深度优先搜索
    迷宫
    元组和字典
    列表
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454045.html
Copyright © 2020-2023  润新知