我i们说的HashSet元素不可以重复,是需要我们在类里边定义判断重复的方法才能实现的,对吧

我i们说的HashSet元素不可以重复,是需要我们在类里边定义判断重复的方法才能实现的,对吧

如果我们不去重写equal和hashCode方法,那么插入重复元素依然可以

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕珊 2018-03-23 17:57:00

可以看一下下面,我运行了你的代码,然后添加了两个代码,输出了size的值,只有一个,也就是只有一条数据。同学可以把你的代码贴全,看看你是怎么输出的。贴代码的时候不要贴到回复里,贴到回答里,否则代码格式都乱了。

http://img1.sycdn.imooc.com//climg/5ab4cf2500016c4608120805.jpg

祝学习愉快!

  • 提问者 liqihang #1
    我运行的结果和你的一样,这是不是说明,如果没有重写equal方法的话,程序不会报错,但是只会存入一对key-value值, 那么针对这段代码,我们把这个类型换成自定义的Cat类,该如何重写equal方法,才能保证输入的key值不能重复
    2018-03-23 18:07:54
  • 一叶知秋519 回复 提问者 liqihang #2
    和之前课程中讲解的向HashSet中存值是一样的啊,建议同学再看下课程:《Java集合——3-8添加重复数据》课程。祝学习愉快!
    2018-03-23 18:56:52
好帮手慕珊 2018-03-23 17:21:11

你的想法是对的,祝学习愉快!

  • 提问者 liqihang #1
    那在HashMap里,key键也是不允许重复的,当我们去插入重复数据时,是不是也要重写equal方法呢
    2018-03-23 17:25:57
  • 好帮手慕珊 回复 提问者 liqihang #2
    如果是自定义的类作为key,也需要重写这两个方法
    2018-03-23 17:37:00
  • 提问者 liqihang 回复 好帮手慕珊 #3
    Map<String, String> map = new HashMap<String, String>(); Scanner in = new Scanner(System.in); for (int i = 0; i < 2; i++) { System.out.println("请输入key值"); String key = in.next(); System.out.println("请输入value值"); String value = in.next(); map.put(key, value); 我输入了<2008,意大利>,<2008,中国>结果输出了两对<2008,中国>,程序没有报错,也正常输出了,为啥,这里边String类型作为key,不是自定义的类啊
    2018-03-23 17:41:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师