黑马程序员技术交流社区

标题: 测试题 [打印本页]

作者: vvvvvc    时间: 2016-6-4 00:42
标题: 测试题
* 题目要求:自定义一个学生类Student,属性为姓名name,年龄age,创建一个ArrayList集合,存储自定义的学生类对象。
1、创建5个学生类对象,姓名随意,年龄使用自动生成的20-30的随机整数                (5分)
2、将创建的5个学生类对象存入ArrayList集合中                (5分)
  1. public static void main(String[] args) {
  2.                 ArrayList<Student> al = new ArrayList<>();
  3.                 Random rd = new Random();
  4.                 int num=1;
  5.                 while(num<=5){
  6.                         int age = rd.nextInt(11) + 20;
  7.                         al.add(new Student("stu", 1));
  8.                         num++;
  9.                 }
  10.                 System.out.println(al);
  11.                
  12.                 getSingle(al);
  13.                 System.out.println(al);
  14.         }

  15.         public static void getSingle(ArrayList<Student> al) {
  16.                 ArrayList<Student> newList = new ArrayList<>();
  17.                 for (Student student : al) {
  18.                         if(!newList.contains(student)){
  19.                                 newList.add(student);
  20.                         }
  21.                 }
  22.                 al.clear();
  23.                 al.addAll(newList);
  24.         }



  25. }


  26. class Student {
  27.         private String name;
  28.         private int age;
  29.         public Student() {
  30.                 super();
  31.                
  32.         }
  33.         public Student(String name, int age) {
  34.                 super();
  35.                 this.name = name;
  36.                 this.age = age;
  37.         }
  38.         public String getName() {
  39.                 return name;
  40.         }
  41.         public void setName(String name) {
  42.                 this.name = name;
  43.         }
  44.         public int getAge() {
  45.                 return age;
  46.         }
  47.         public void setAge(int age) {
  48.                 this.age = age;
  49.         }
  50.         @Override
  51.         public String toString() {
  52.                 return "Student [name=" + name + ", age=" + age + "]";
  53.         }
  54.         @Override
  55.         public int hashCode() {
  56.                 final int prime = 31;
  57.                 int result = 1;
  58.                 result = prime * result + age;
  59.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  60.                 return result;
  61.         }
  62.         @Override
  63.         public boolean equals(Object obj) {
  64.                 if (this == obj)
  65.                         return true;
  66.                 if (obj == null)
  67.                         return false;
  68.                 if (getClass() != obj.getClass())
  69.                         return false;
  70.                 Student other = (Student) obj;
  71.                 if (age != other.age)
  72.                         return false;
  73.                 if (name == null) {
  74.                         if (other.name != null)
  75.                                 return false;
  76.                 } else if (!name.equals(other.name))
  77.                         return false;
  78.                 return true;
  79.         }
  80.        
  81. }
复制代码

3、将集合中的学生对象去重,去重的标准是:姓名和年龄都相同就认为是同一个学生                (5分)


作者: 骄阳登峰    时间: 2016-6-4 01:17
不错不错,来看看.
作者: 我love    时间: 2016-6-4 01:39
底层依靠的是hashCode()方法和equals()方法




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