1

我想知道的原因是,在整个商店搜索允许您指定自己的等于/哈希码函数的 LinkedHashMap/LinkedHashSet 的实现之后,我找不到一个。

我发现有几个库只为 HashMap 实现了这一点,还有一个承诺在未来的某个时候为 LinkedHashMap 实现它,但仍然没有。

所以我决定只修改HM源并自己做,然后再实现LHM。

如果我可以窃取此代码的预先存在的测试类,然后添加/修改它们,那就太酷了。因此这个问题。

4

1 回答 1

4

如果您正在寻找Map测试,您可能会比Guava 的 MapTestSuiteBuilder做得更差。您还可以在包中找到SetTestSuiteBuilder和其他方便的工具来测试与其相邻的集合,以及附近的方便EqualsTester 。(有关如何使用测试的示例,请参见 Louis 的链接。)

您也可以考虑制定一个LinkedHashMap恰好包含 GuavaEquivalence.Wrapper类型对象的标准。基本上,您创建一个Equivalence包含您自己设计的equalsandhashCode方法的实现,然后使用它为您希望保留在 set/map 中的每个对象创建轻量级包装器。包装器上的equalsandhashCode将使您的Set/Map行为保持您想要的方式,然后您可以打开实例以供以后使用。

(当然,您也可以跳过 Guava 并编写一个单字段包装器对象来实现equalsand hashCode,但 Guava 已经为您编写了一个。)

于 2012-10-19T02:27:30.697 回答