A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© _J2EE_LiXiZhen 中级黑马   /  2017-11-15 23:40  /  1337 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个学科中有若干班级,每一个班级又有若干学生。整个学科一个大集合,若干个班级分为每一个小集合(集合嵌套之HashSet嵌套HashSet)。要求如下
学生类有两个属性,姓名和年龄,并定义有参构造、无参构造和getter/setter方法.姓名和年龄相同的视为同一学生
向班级集合中添加若干个学生(至少两个学生)。
向学科集合中添加所有班级(至少创建两个班级)。
使用两种方法遍历学科集合,并打印出所有学生。

[Java] 纯文本查看 复制代码
//定义一个Student类,包含名称,年龄,性别(姓名,年龄,性别完全相同视为同一学生)

public class Student {
	//姓名
	private String name;
	//年龄
	private int age;
	
	public Student() {
		super();
	}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	//get/set
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		/*if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;*/
		if(age!=other.age && name!=other.name)
			return false;
		return true;
	}
}

public class HashSetTest08 {
	public static void main(String[] args) {
		// 创建班级集合1
		HashSet<Student> Class1 = new HashSet<>();
		// 添加两个学生
		Class1.add(new Student("zhangsan", 18));
		Class1.add(new Student("lisi", 20));
		Class1.add(new Student("wangwu", 17));

		// 创建班级集合2
		HashSet<Student> Class2 = new HashSet<>();
		Class2.add(new Student("xiaojuan", 22));
		Class2.add(new Student("xiaowang", 22));
		Class2.add(new Student("lixizhen", 24));

		// 创建学科集合
		HashSet<HashSet> project = new HashSet<>();
		// 添加班级
		project.add(Class1);
		project.add(Class2);

		// 使用两种方法遍历学科集合,并打印出所有学生
		for (HashSet<Student> s : project) {

			for (Student stu : s) {
				System.out.println(stu.getName() + " " + stu.getAge());
			}
		}

		System.out.println("===================");

		// 迭代器
		Iterator<HashSet> it = project.iterator();
		while (it.hasNext()) {
			HashSet<Student> stu = it.next();
			Iterator<Student> it2 = stu.iterator();
			while (it2.hasNext()) {
				Student st = it2.next();
				System.out.println(st.getName() + " " + st.getAge());
			}
		}
	}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马