黑马程序员技术交流社区

标题: HashSet集合02(嵌套HashSet) [打印本页]

作者: _J2EE_LiXiZhen    时间: 2017-11-15 23:40
标题: HashSet集合02(嵌套HashSet)
一个学科中有若干班级,每一个班级又有若干学生。整个学科一个大集合,若干个班级分为每一个小集合(集合嵌套之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());
                        }
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2