简单的 Java 地图拼图
这种通用库方法的最佳实现是什么?
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
与大多数编码难题一样,判断此难题的标准按以下顺序排列:
- 完整性
- 正确性
- 性能
- 美观
- PayPal 贡献收据
编辑:
好吧,既然它已经关闭,我不妨发布答案。我认为这可能是最佳的:
V valueForKey = map.get(key);
return (valueForKey == null)
? value == null && map.containsKey(key)
: valueForKey.equals(value);
一个聪明的简单解决方案是:
return map.entrySet().contains(
new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
它确实分配一个实例,但它为地图实现提供了更多的机会来执行最佳操作。
What is the best implementation for this general-purpose library method?
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
Criteria for judging this puzzle, as with most coding puzzles, are in this order:
- Completeness
- Correctness
- Performance
- Beauty
- Receipt of PayPal contribution
EDIT:
Well, since it got closed, I might as well post the answer. I think this is probably optimal:
V valueForKey = map.get(key);
return (valueForKey == null)
? value == null && map.containsKey(key)
: valueForKey.equals(value);
A clever simple solution would be:
return map.entrySet().contains(
new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
It does allocate an instance, but it gives the map implementation a little more opportunity to do something optimal.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从已删除的帖子复制。
Copied from deleted post.
您还可以内联 isEqual 方法。
You can also inline isEqual method.
据推测,它的目的是返回一个布尔值:
Presumably it's meant to return a
boolean
: