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