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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vvvvvc 中级黑马   /  2016-6-4 00:42  /  888 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 题目要求:自定义一个学生类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分)

2 个回复

正序浏览
底层依靠的是hashCode()方法和equals()方法
回复 使用道具 举报
不错不错,来看看.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马