• 梁大瓜
    2019-10-28
    查找key的时候声明Ojbect我想是因为万物都是Ojbect的原因吧,如果查询的类型或者key不存在Map里可以直接调用Object中的方法或者异常处理。我有个没理解的地方就是,在遍历map的时候,为啥要把k-v封装成entry呢?相比于直接遍历可迭代的map,封装成entry对象有啥好处嘛。

    作者回复:
    一个原因是kv就是以entry的方式存储在map里的。直接遍历可迭代的map,也要知道哪个key对应到哪个value,其实还是要有一个类封装起key和value。

    
    
  • 胖胖胖
    2019-09-23
    get (),remove(),可以直接用object,不知道是不是因为在存储里面key都是按照String来存储的,这样只要不是足够长的key都可以只用一个内存空间而且检查key是否重合会很方便。然后Entry有个疑问,Entry是个接口,为啥可以实例化出来用范围for语句便利呀。

    作者回复: Q1:因为key只需要hashcode和equals方法。这两个方法在Object里都是有的。

    Q2:for的是Entry的Set,不是Entry。实例化出来的也是Entry接口的实现类的实例。只是这个实例是用Entry类型的引用指着。

    
    
我们在线,来聊聊吧