是否可以实现由给定HashSet实现支持的MyHashMap?

Wei*_* Li 3 java hashmap hashset data-structures

众所周知,在Sun(Oracle)JDK中,HashSet实现了一个支持HashMap,以重用复杂的算法和数据结构.但是,有可能实现一个MyHashMap使用java.util.HashSet作为它的背面?如果可能,怎么样?如果没有,为什么?

请注意,此问题仅是对编码技巧的讨论,不适用于生产场景.

Pet*_*rey 5

Trove将它的Map基于它的Set实现.但是,它有一个缺少Set的关键方法,它是一个get()方法.

如果没有get(Element)方法,HashSet就无法执行查找,这是Map的关键功能.(原谅双关语)唯一的选择Set是一个包含可以被黑客攻击来执行get()但它不是理想的.

你可以有;

  • a Entry是键和值的集合.
  • 在键相同时将条目定义为相等.
  • 你破解equals()方法,所以当匹配时,在"put"上更新条目的值部分,并在"get"上复制值部分.

Set可以被设计为扩展为Map,但它不是,并且使用HashSet或现有的Set实现来创建Map不是一个好主意.