qq_58533634 2021-06-23 15:02 采纳率: 77.8%
浏览 22
已采纳

Java问题 定义比较 返回值

6.在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。要求如下:

Person类中定义name和age属性,重写hash()和equals()方法,针对Person类的name属性进行比较,如果name相同,hashcode()方法的返回值也相同,equals1方法返回true。

 

  • 写回答

1条回答 默认 最新

  • GvG1008 2021-06-23 15:59
    关注
    //Person类
    public class Person {
        private String name;
        private int age;
    
        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        @Override
        public int hashCode() {
            return name.hashCode();
        }
    
        @Override
        public boolean equals(Object obj) {
            if(!(obj instanceof Person)) {
                return false;
            }
            Person person = (Person)obj;
            if(name == null) {
                return person.getName() == null? true : false;
            }
            return name.equals(person.getName());
        }
    
        @Override
        public String toString(){
            return "name:" + name + ", age:" + age;
        }
    }
    
    //测试
    public class Test {
        public static void main(String[] args) {
            HashSet set = new HashSet<Person>();
            Person p1 = new Person("张三",18);
            Person p2 = new Person("张三",20);
    
            set.add(p1);
            set.forEach(p -> System.out.println(p.toString()));
            System.out.println(set.size());
    
            set.add(p2);
            set.forEach(p -> System.out.println(p.toString()));
            System.out.println(set.size());
    
            System.out.println(p1.equals(p2));
        }
    }
    

    运行结果:

    name:张三, age:18
    1
    name:张三, age:18
    1
    true

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题