集合题目:
1,定义一个Course类,代表课程;定义一个Student类,代表学生,在Student类中包含一个属性是一个HashSet的对象,用来存储该学生所选的所有课程,并提供相应的addCourse(Course c)方法
2,定义一个类SchoolClass代表班级,该类中包含一个属性是一个HashSet的对象,用来存储该班级中所有的Student,并提供相应的addStudent(Student s)方法
3,在主方法中生成一个SchoolClass对象,添加若干个学生,并且为每个学生添加若干门课程,最后要统计出每门课程的选课人数。(随机)
Course类:
package exercise3;
public class Course {
private String cname;
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Course(String cname) {
this.cname = cname;
}
public boolean equals(Object o) {
if (o instanceof Course) {
Course c = (Course) o;
if (c.cname.equals(this.cname)) {
return true;
}
}
return false;
}
public int hashCode() {
return this.cname.hashCode();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
return sb.append(cname).toString();
}
}
Student类:
package exercise3;
import java.util.HashSet;
public class Student {
private String sname;
private HashSet<Course> courses;
// 构造方法
public Student(String sname) {
this.sname = sname;
courses = new HashSet<Course>();
}
// 增加课程
public boolean addCourse(Course c) {
return courses.add(c);
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public HashSet<Course> getCourses() {
return courses;
}
public void setCourses(HashSet<Course> courses) {
this.courses = courses;
}
public boolean equals(Object o) {
if (o instanceof Student) {
Student s = (Student) o;
if (s.sname.equals(this.sname)) {
return true;
}
}
return false;
}
public int hashCode() {
return this.sname.hashCode();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
return sb.append("Student [Sname=").append(sname).append(courses)
.append("]").toString();
}
}
SchoolClass类:
package exercise3;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class SchoolClass {
private String name;
private HashSet<Student> students;// 班级中所有的学生
public SchoolClass(String name) {
this.name = name;
students = new HashSet<Student>();
}
public boolean addStudent(Student s) {
return students.add(s);
}
public Map<Course, Integer> account() {// 统计每门课程的选课人数,key代表课程,value代表人数。
Map<Course, Integer> map = new HashMap<Course, Integer>();
Iterator<Student> it = students.iterator();
while (it.hasNext()) {// 遍历所有学生
Student stu = it.next();
Iterator<Course> is = stu.getCourses().iterator();
while (is.hasNext()) {// 遍历每个学生所选的课程
Course c = is.next();
map.put(c, map.get(c) == null ? 1 : map.get(c) + 1);
}
}
return map;
}
public void printCount() {
Set<Course> set = account().keySet();
Iterator<Course> it = set.iterator();
while (it.hasNext()) {
Object key = it.next();
System.out.println(key + "," + account().get(key));
}
}
}
Test测试类:
package exercise3;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Course[] course = { new Course("Java语言"), new Course("高数"),
new Course("英语"), new Course("数据库") };
SchoolClass class1 = new SchoolClass("Class1");
for (int i = 0; i < 20; i++) {
Student stu = new Student("Student-" + (i + 1));
int num = (int) (Math.random() * course.length);
for (int j = 0; j < num; j++) {
stu.addCourse(course[(int) (Math.random() * course.length)]);
}
class1.addStudent(stu);
System.out.println(stu);
}
System.out.println("==================================");
class1.printCount();
}
}
运行结果:
Student [Sname=Student-1[]]
Student [Sname=Student-2[]]
Student [Sname=Student-3[Java语言]]
Student [Sname=Student-4[数据库]]
Student [Sname=Student-5[Java语言, 英语, 高数]]
Student [Sname=Student-6[英语, 数据库]]
Student [Sname=Student-7[]]
Student [Sname=Student-8[Java语言, 英语]]
Student [Sname=Student-9[数据库]]
Student [Sname=Student-10[高数]]
Student [Sname=Student-11[英语, 高数]]
Student [Sname=Student-12[Java语言]]
Student [Sname=Student-13[]]
Student [Sname=Student-14[英语]]
Student [Sname=Student-15[数据库, 英语]]
Student [Sname=Student-16[英语, Java语言, 数据库]]
Student [Sname=Student-17[]]
Student [Sname=Student-18[]]
Student [Sname=Student-19[英语]]
Student [Sname=Student-20[英语]]
==================================
数据库,5
Java语言,5
英语,9
高数,3
分享到:
相关推荐
电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料集合.zip电赛的题目代码资料...
【标题】"蓝桥杯复习题目集合"是一个针对编程竞赛准备的资源包,主要涵盖了C语言和Java语言的算法题目及解答。这个压缩包显然旨在帮助参赛者或对算法学习有兴趣的人进行训练和复习,以提升他们在ACM(国际大学生程序...
答题小程序 list 题目集合
题目一:求两个集合的合并运算 在计算机科学中,集合是存储不重复元素的数据结构。合并两个集合通常涉及到将一个集合的所有元素添加到另一个集合中,确保结果集合中没有重复的元素。对于这个问题,可以使用两种基本...
经典算法设计与分析编程题集合划分题目和代码实现
例如,题目中的集合M是全集{1,2,3,4,5,6}的子集。 2. **集合的表示**:集合可以用花括号{}来表示,元素之间用逗号分隔。例如,集合{1,2,3}表示包含三个元素1、2、3的集合。题目中提到了错误的集合写法,例如元素...
本压缩包文件“电子设计竞赛题目集合”汇聚了从1994年至2019年间的历年竞赛题目,为参赛者提供了一个丰富的学习资源库。 首先,我们可以看到这个集合跨越了近三十年的时间,这意味着它包含了一段时期内电子科技发展...
毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx毕业设计题目集合.docx
【华为OJ题目集合】是华为在线判题(Online Judge,简称OJ)系统的一份题目合集,主要面向编程爱好者和求职者,提供了一系列的编程挑战,旨在提升编程技能和解决问题的能力。这个集合可能包含了C和C++两种语言的解题...
【标题】"727_基础题目集合"的描述中并未提供具体的IT知识点,但从标题来看,这可能是一个关于编程或技术学习的资源包,包含了多个基础题目,旨在帮助学习者巩固基础知识。在这个集合中,我们可以期待看到各种类型的...
【浙江大学PAT题目集合(1001-1091)】是一份涵盖了高级难度的程序能力测试题目的资源,适合提升编程技能和算法理解。这些题目覆盖了从1001到1091号,是浙江大学PAT考试的题库更新版。资源的创建者花费大量时间整理...
数据库题目集合.pdf
网络系统管理与维护题目集合.pdf网络系统管理与维护题目集合.pdf网络系统管理与维护题目集合.pdf网络系统管理与维护题目集合.pdf网络系统管理与维护题目集合.pdf网络系统管理与维护题目集合.pdf
(题目1) 数据库与文件系统的根本区别在于数据的构造化。(题目3) 数据库减少了数据冗余,提高了数据的独立性和安全性。(题目5) 实体—联系模型是一种概念模型,用于描述实体之间的关系。(题目8) 数据库...
⑶ 编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1; ⑷ 编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单循环链表中; ⑶ 编写求...
计算机网络论文题目集合,对计算机网络专业的毕业生提供一个题目参考,还在为不知道写什么发愁吗,下载看看吧
它们可能是某个合同法题目集合中的题目索引、编码或特定标识,但由于缺乏上下文,很难解读这些内容具体指的是哪些合同法的具体知识点。 考虑到上述情况,如果要从文件名“合同法题目集合.pdf”中提取知识点,我们...
1. 监视哨查找:这种方法是在数组末尾添加一个待查找的元素,然后从后向前遍历,找到目标元素的位置。 2. 折半查找:利用二分法,每次将查找范围减半,直到找到目标元素或者确定不在数组中。 3. 冒泡排序:通过不断...
【标题】"小题目集合"所指的是一系列适合初学者的C++编程练习题,这些题目旨在帮助新手更好地理解和掌握C++语言的基础知识。在C++的学习过程中,通过解决实际问题来巩固理论知识是非常有效的学习方法。这些小题目...
ArrayList方法介绍及源码分析其实就是一句话,List集合是有序的,根据索引(index)来访问元素,另外,list集合允许有重复的元素 ArrayList是List的实现