2016-03-02 99 views

回答

2

番石榴没有IdentitySetMultimap。我们通常建议您按照您的建议进行操作,或者创建SetMultimap<Equivalence.Wrapper<Key>, Equivalence.Wrapper<Value>>。在查询/修改集合之前,您将使用Equivalence.identity() . wrap(...)来包装您的键和值。

(更新:可以从another answer看到,有另一种方式来做到这一点。)

3

使用Eclipse Collections您目前可以为值设置标识,但不是密钥的标识映射(截至今天)。如果您只需要为值的标识设置,那么以下方法将起作用。

MutableSetMultimap<String, String> multimap = 
    UnifiedSetWithHashingStrategyMultimap.newMultimap(
     HashingStrategies.identityStrategy()); 
multimap.put("a", "a"); 
multimap.put("a", new String("a")); 
multimap.put("a", new String("a")); 

Assert.assertEquals(3, multimap.get("a").size()); 

您也可以定义自己的HashingStrategy实现为使用UnifiedSetWithHashingStrategyMultimap

注意:我是Eclipse集合的提交者。