Java 学习之集合框架---Set

Set中的元素不可以重复且没有顺序,我们通常称之为集。

Set 接口及其实现类-----HashSet(哈希集)

因为Set 是无序的并且不可以重复的所以 对于set 来说也就不可以进行修改,也就不存在使用get ()方法获取其中的元素,所以对于Set 来说,遍历一般采用的方法就死foreach循环迭代。

学生类:里面包含某一个学生的选课信息:

import java.util.HashSet;
import java.util.Set;
/**
 * 学生类
 * @author ge.zhang
 *
 */
public class Student {
public String name;
public String id;
public Set<Course> crouse;

public Student(String id,String name){
    this.name=name;
    this.id=id;
    this.crouse=new HashSet<Course>();
}
}

创建Courses待选课程,通过键盘输入ID 来向学生类的SET crouse 里面添加某一位学生所选的课程。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class SetTest {
 
    public static List<Course> courses=new ArrayList<Course>();
    public void AddCourse(){
        Course crs[]={new Course("高等数学","1"),new Course("数据机构", "2"),new Course("C语言", "3"),new Course("大学英语", "4")};
        courses.addAll(Arrays.asList(crs));
    }
    public void print(List<Course> co){
        for(Course c1:co){
            System.out.println(c1.id+":"+" "+c1.name);
        }
        
    }
    
    public void printSet(Set<Course> co){
        for(Course c1:co){
            System.out.println(c1.id+":"+" "+c1.name);
        }
    }
    public static void main(String[] args) {
        SetTest st=new SetTest();
        st.AddCourse();
        st.print(courses);
        Student student=new Student("1", "jack");
        //循环接收学生选择的课程
        System.out.println("欢迎学生"+student.name+"选课");
        Scanner console=new Scanner(System.in);
        for(int i=0;i<3;i++){
            System.out.println("请输入课程名称:");
            String ID=console.next();
            for(Course c2:courses){
                if(c2.id.equals(ID)){
                 student.crouse.add(c2);   
                }
            }
        }
       st.printSet(student.crouse);
    }

}
连续运行两次,会发现相同的输入却有不同的输出顺序,因为Set中的元素是无顺序的,对于 set中添加相同元素无论添加多少次都只保留第一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值