关于HashMap()里的values()方法

Student2 student1=new Student2("李明","男");
Student2 student2=new Student2("刘丽","女");

Map stu=new HashMap();

stu.put("Jack",student1);

stu.put("Rose", student2);

System.out.println("键集"+stu.keySet());

System.out.println("值集"+stu.values());
-----------------------------------------------
输出结果
键集[Jack, Rose]
值集[com.rr.test2.Student2@16caf43, com.rr.test2.Student2@66848c]
结果没问题,一起正常。
-------------------------------------------------------------

通过这个结果,我发现一个问题,值输出的哈希码值?这说明输出语句"值集"+stu.values()的时候,是调用了
父类Object的toString方法,由此我得出一个结论stu.values()方法跟toString有关,于是我又查了api,
发现values()方法这么介绍的:
values 
public Collection<V> values()
返回此映射所包含的值的 collection 视图。

返回值这没错,我们先放一边这不是讨论的重点,重点是如何调用的父类toString方法?
我想不通public Collection<V> values()里并没有任何的Object的东西,怎么就最后调用的Object的toString方法呢?


public Collection<V> values()这个方法肯定是hashmap重写的方法,因为Hasmap是接口的一个实现类,但是HasMap重写这个方法后,方法体里到底有没有东西?写的什么东东最后就变成调用Object的toString方法了?

Collection<V> values()这个代表什么?Collection<V>是个接口,里面就算有方法也都是没方法体的,那定义这样一个类型有什么用?



我感觉public Collection<V> values()方法体里还有东西,肯定是返回的什么东西,反正最后就是传到Object那里,然后按toString方法输出的哈希码值就对了?是不是这样?

转载于:https://www.cnblogs.com/ahwankong/p/3153043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值