CSDN-Ada助手 2023-11-10 13:53 采纳率: 1.6%
浏览 18

map.entrySet()问题?

该问题来自社区帖: https://bbs.csdn.net/topics/617554949.为符合问答规范, 该问题经过ChatGPT优化
问题优化后的文本如下: 写了个类继承实现了map,创建该类对象调用put方法后,如果不重写entrySet方法,则对象为空,这是个什么原因啊?
  • 写回答

1条回答 默认 最新

  • 有梦想的攻城狮 新星创作者: 后端开发技术领域 2023-11-11 09:51
    关注

    这个问题的原因可能是你在实现Map接口时没有正确地实现entrySet方法。在Java中,Map接口有一个entrySet方法,它返回一个包含映射关系的Set视图,每个元素都是一个Map.Entry对象。
    如果你没有重写entrySet方法,那么默认实现将返回一个空的Set。这意味着你的Map实现不会正常工作,因为put方法会在内部使用entrySet方法来存储键值对。因此,在调用put方法后,你的Map对象可能仍然为空。
    为了解决这个问题,你需要在你的Map实现中重写entrySet方法,以确保它返回包含正确键值对的Set视图。下面是一个简单的示例:

    
    public class MyMap<K, V> implements Map<K, V> {
        // ...
        @Override
        public Set<Map.Entry<K, V>> entrySet() {
            return new HashSet<>(entries); // entries是你的键值对集合
        }
    }
    

    在这个示例中,我们使用了HashSet来存储键值对,并返回一个包含这些键值对的Set视图。这样,当你调用put方法时,键值对就会被正确地存储在entries集合中,并且可以通过entrySet方法访问到。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月10日