java - 简单的 Java map 拼图

标签 java collections puzzle

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

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));

它确实分配了一个实例,但它为 map 实现提供了更多做优化的机会。

最佳答案

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.

关于java - 简单的 Java map 拼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685552/

相关文章:

java - Grails - 两个日期之间的差异

c# - NUnit CollectionAssert.AreEqual(expected,actual) vs Assert.IsTrue(expected.SequenceEqual(actual))

c# - 如何在 C# 中存储数据元组?

java - 设置盘点项目

php - 8 拼图,图树路径生成器

java - 如何阻止 Eclipse 中的光标自动跳转?

java - Spring 数据JPA : extend a JPA Query generically

java - 如何根据jTable中的jComboBox选择更新相邻字段?

algorithm - 不同面额的硬币依次放置,挑选硬币使总和最大

php - 从给定的多组集合中找出最佳组合