java - android.util.Pair 作为 HashMap 中的键

标签 java android

可以使用http://developer.android.com/reference/android/util/Pair.html吗?这用于 HashMap 中的键? 因为对我来说,这个类为 equals() 和 hashCode() 提供了有效的实现。我说得对吗?

最佳答案

由于 Pair 支持 equals 和 hashcode,您可以安全地将其用作 key 。

我整理了一个非常简单的 JUnit 测试来让自己确信这是真的并且它通过了。

public final void testPairAsHashMapKey() {

    HashMap<Pair<Integer, Integer>, String> map = new HashMap<Pair<Integer, Integer>, String>();

    Pair<Integer, Integer> p1 = new Pair<Integer, Integer>(0, 0);
    Pair<Integer, Integer> p2 = new Pair<Integer, Integer>(0, 0);
    Pair<Integer, Integer> p3 = new Pair<Integer, Integer>(5, 3);
    Pair<Integer, Integer> p4 = new Pair<Integer, Integer>(3, 5);

    map.put(p1, "foo");
    assertEquals(1, map.size());
    assertEquals("foo", map.get(p1));

    map.put(p2, "new_foo");
    // p2.equals(p1) so map will not grow but value will update
    assertEquals(1, map.size());
    assertEquals("new_foo", map.get(p2));

    map.put(p3, "bar");
    assertEquals(2, map.size());
    assertEquals("bar", map.get(p3));

    map.put(p4, "test");
    assertEquals(3, map.size());
    assertEquals("test", map.get(p4));

}

关于java - android.util.Pair 作为 HashMap 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569064/

相关文章:

java - 如何在 Android 中计算字符串的 SHA-256 哈希?

java - 使用 MVVM 进行 Android UI 测试

Java将Json字符串转为数组

Java android onCreate 总是调用

java - 如何使用谷歌应用程序引擎(JAVA)中的复选框删除多个数据

java - 等效于 Objective C/Swift 的 Java ThreadLocal 变量

java - 我应该传递类里面的哪些信息才能获得所需的结果

javascript - 如何将第三方应用程序 apk 集成到我的 android studio 项目中?

android - 限制 Firebase 实时数据库中的用户数量

android - 自定义警报对话框