Java中的集合框架(二)

前面我们介绍了List接口及其实现类ArrayList,接下来来说一下Collection接口的另一个重要也是常用的子接口Set及其实现类HashSet

2. Set接口及其实现类——HashSet

    Set是元素无序并且不可重复的集合,被称为集

    HashSet——哈希集,是Set的一个重要实现类

接下来的例子和前面差不多

先是创建一个学生类

import java.util.HashSet;
/*
 * 创建一个学生类
 */
import java.util.Set;

public class Student {
	
	public String id;
	
	public String name;
	
	/*
	 * 存放学生所选课程
	 */
	public Set<Course> course;//泛型

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

然后是课程类

/*
 * 创建一个课程类
 */
public class Course {
	public String id;
	
	public String name;
	
	public Course(){}
	
	public Course(String id,String name){
		
		this.id=id;
		this.name=name;
	}
}

接下来是测试类SetTest

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class SetTest {
	
	public List<Course> coursesToSelect;
	
	public SetTest(){
		coursesToSelect = new ArrayList<Course>();
	}
	
	public void testAdd(){
		Course cr1 =new Course("0","数据结构");
		coursesToSelect.add(cr1); 
		
		Course cr2 =new Course("1","C语言");
		coursesToSelect.add(cr2);	

		Course cr3 =new Course("2","Java");
		coursesToSelect.add(cr3);
		
		Course []courses={new Course("3","计算机组成"),new Course("4","编译原理")}; 
		coursesToSelect.addAll(Arrays.asList(courses));
	}
	
	/**
	 * 用foreach遍历
	 */
	public void testForeach(){
		System.out.println("有如下课程待选(通过foreach访问):");
		for(Course cr:coursesToSelect){
			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 student1 = new Student("001","小明");
		System.out.println("欢迎学生:"+student1.name+"选课!");
//		创建一个Scanner对象,用来接收键盘输入的课程id
		Scanner console = new Scanner(System.in);
		
		for(int i=0;i<3;i++){
			System.out.println("输入选择的课程ID:");
			String courseID =console.next();
//判断是否是可选的课程,是的话则加入学生的课程Set集合
			for(Course cr:st.coursesToSelect){
				if(cr.id.equals(courseID)){
					student1.course.add(cr);
				}
			}
		}
		
//		打印输出
		System.out.println("共选择了:"+student1.course.size()+"门课程");
		for(Course cr:student1.course){
			System.out.println("选择了课程:"+cr.id+":"+cr.name);
		}
	}

}

猜你喜欢

转载自blog.csdn.net/qq_36986067/article/details/80691550