简单的 Java 地图拼图

发布于 2024-08-11 01:32:36 字数 701 浏览 5 评论 0原文

这种通用库方法的最佳实现是什么?

public static <K, V> boolean containsEntry(
    Map<K, V> map, K key, V value) {}

与大多数编码难题一样,判断此难题的标准按以下顺序排列:

  1. 完整性
  2. 正确性
  3. 性能
  4. 美观
  5. 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:

  1. Completeness
  2. Correctness
  3. Performance
  4. Beauty
  5. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清醇 2024-08-18 01:32:36
public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) && isEqual(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}

从已删除的帖子复制。

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) && isEqual(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}

Copied from deleted post.

聽兲甴掵 2024-08-18 01:32:36
public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) & isEquals(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}

您还可以内联 isEqual 方法。

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) & isEquals(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}

You can also inline isEqual method.

青春如此纠结 2024-08-18 01:32:36

据推测,它的目的是返回一个布尔值:

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    return map.containsKey(key) && map.get(key).equals(value);
}

Presumably it's meant to return a boolean:

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    return map.containsKey(key) && map.get(key).equals(value);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文