您的位置:首页 > 编程语言 > Java开发

JAVA中的集合框架(Set)

2018-03-13 02:28 197 查看
转帖请注明本文出自weimeig的博客(http://blog.csdn.net/weimeig/article/details/79535273),请尊重他人的辛勤劳动成果,谢谢
应朋友们反馈的JAVA基础薄弱的问题,决定出一套完整的JAVA基础教程,帮助大家复习,巩固JAVA基础,今天要讲的是JAVA中的Set集合。
ArrayList是有序的集合,而Set是无序的集合
有序的集合ArrayList中可以添加多个相同对象(的引用)
而Set中,添加某个对象,无论添加多少次, 最终只会保留一个该对象(的引用)
并且,保留的是第一次添加的那一个
import java.util.HashSet;
import java.util.Set;

/**
* 学生类
* @author Administrator
*
*/
public class Student {
private String id;
private String name;
private Set<Course> course;
Student(String id,String name){
this.id = id;
this.name = name;
this.course = new HashSet<Course>();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getCourse() {
return course;
}
public void setCourse(Set course) {
this.course = course;
}
}
/**
* 课程类
* @author Administrator
*
*/
public class Course {
private String id;
private String name;
Course(){

}
Course(String id,String name){
this.id=id;
this.name=name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}
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(){
this.coursesToSelect = new ArrayList<Course>();
}
/**
* 用于往coursesToSelect中添加备选课程
*/
public void testAdd(){
Course cr1 = new Course("1","数据结构");//new一个Course类的数据类型
coursesToSelect.add(cr1);//所为一条数据插入List中
Course temp = (Course)coursesToSelect.get(0);//获取LIst中的第一条数据\

Course cr2 = new Course("2","C语言");
coursesToSelect.add(0, cr2); //两个参数的add方法,选择插入元素的位置
Course temp2 = (Course) coursesToSelect.get(0);//将元素插入到第一条,对象存入集合都变成Object类型,取出时需要类型转换

Course[] course = {new Course("3","离散数学"), new Course("4","汇编语言")};
coursesToSelect.addAll(Arrays.asList(course));  //添加数组用addAll
Course temp3 = (Course) coursesToSelect.get(2);
Course temp4 = (Course) coursesToSelect.get(3);
//按位置插入

Course[] course2 = {new Course("5","高等数学"),new Course("6","大学英语")};
coursesToSelect.addAll(2, Arrays.asList(course2));
Course temp5 = (Course)coursesToSelect.get(2);
Course temp6 = (Course)coursesToSelect.get(3);
}

/**
* 通过for each方法访问集合元素
* 迭代器的简便写法
* @param args
*/
public void testForEach(){
System.out.println("有如下课程可选(通过for each访问):");
for(Object obj:coursesToSelect){//去遍历coursesToSelect集合中的每一个元素,把它取出来作为Object的一个变量
//(当一个元素存入到集合中的时候,他的类型是被忽略了的,集合只是拿他当Object用),当取出来的时候也是一个Object,因此
Course cr =(Course)obj;//当他取出来后,需要做强转
System.out.println("课程:" + cr.getId() + ":" + cr.getName());
}
}

public static void main(String []args){
SetTest st =new SetTest();
st.testAdd();
st.testForEach();
//创建一个学生对象
Student student = new Student("1","小明");
System.out.println("欢迎学生:" + student.getName() + "选课!");
//创建一个Scanner对象,用来接收从键盘输入的课程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.getId().equals(courseId)){
student.getCourse().add(cr);
//					student.getCourse().add(cr);
/**
* Set中,添加某个对象,无论添加多少次,
* 最终只会保留一个该对象(的引用)
* 并且,保留的是第一次添加的那一个
*/
//					student.getCourse().add(null);Set中是允许添加null空对象的

}
}
}

st.testForEachForSet(student);
}

public void testForEachForSet(Student student){
//打印输出,学生所选的课程!
System.out.println("共选择了" + student.getCourse().size() + "门课程");
for(Object obj : student.getCourse()){
Course cr = (Course)obj;
System.out.println("选择了课程:" + cr.getId() + ":" +cr.getName());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: