201 01 Android 零基础入门 03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据 201 01 Android 零基础入门 03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据 添加重复的宠物猫信息数据

本文知识点:添加重复的宠物猫信息数据

说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

添加重复的宠物猫信息数据

添加重复的宠物猫对象

201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据
添加后的结果,添加成功了?
思考一下,这符合Set集合的规则嘛?不是说不允许添加重复数据嘛?
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

疑问:
之前相同的字符串不是不能添加到Set集合中嘛?
为什么重复的宠物猫对象可以添加成功呢?

201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

原因分析:
字符串是系统提供给我们的类,那里面判断数据是否重复的规则,也就是两个String对象是否完全一样,String对象中的属性是否完全一样,这些信息已经定义好了的,我们直接拿过来使用即可。

而现在,使我们自己定义类,自己定义宠物猫类,那如何判断两个宠物猫类就是一样的呢?
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

这就涉及到,Object类中hashSet()和toString()这两个方法的使用了。

重写Object类中的hashCode方法与equals方法

所以,在Cat类中,我们还需要再重写2个方法——hashCode()和equals()

通过对这2个方法的重写,来判断2个宠物猫对象的信息是否相等。
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

使用Eclipse工具来添加对hashCode和equals方法的重写
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

重写hashCode和equals方法
重写hashCode方法,直接用Eclipse工具提供的就好(具体的代码和原理这里就不展开详细讲了),hash表和hashCode的原理后续再补充
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

重写equals方法
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

重写hashCode和equals方法之后,再测试添加重复对象

添加失败
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
201 01 Android 零基础入门  03 Java常用工具类 04 Java集合 03 Set集合 05 添加重复的宠物猫信息数据
添加重复的宠物猫信息数据

添加失败,就符合了我们所说的:Set集合不允许添加重复元素

这里,我们也看到添加自定义类对象和添加String类对象还是有区别的。自定义类中一定还是会涉及到一个比较的问题,即:如何判断自定义的对象是否相等。
此时,判断相等与否就需要重写hashCode和equals方法进行判断了。