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;
}
}
应朋友们反馈的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()); } } }
相关文章推荐
- java 集合框架(3)Set接口和SortedSet接口
- java学习笔记集合框架Set集合
- java 集合框架 Set Map List
- Java常见集合框架(十):Set之TreeSet、HashSet
- 黑马程序员_java_集合框架_Collection_List_Set_Map_泛型
- Java——集合框架之Set&HashSet,HashMap,泛型,compareTo
- 黑马程序员_Java第14天知识总结_集合类(集合框架)_Collection_迭代器_List_Set_HashSet
- Java基础知识强化之集合框架笔记41:Set集合之HashSet存储自定义对象并遍历练习
- java的集合框架set 和map的深入理解
- Java 集合框架--Set 集合
- Java 集合框架之set用法
- Java_List Set Map_集合框架 泛型
- java基础-- 集合框架 之 Set集合
- Java基础知识强化之集合框架笔记67:Map集合面试题之List,Set,Map等接口是否继承自Map接口
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- java学习笔记:集合框架之TreeSet
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- Java 集合框架Example-Set
- 黑马程序员-Java 集合框架(一)-概述、List、Set
- java基础-- 集合框架 之 Set集合