Java 从 hashmap 中删除对象

标签 java hashmap

public Map<Object> map = new HashMap<Object>();


map.add(new Object ("a", "b"));


public class Object {

    private String a;
    private String b;
    private String c;

    public Object(String a, String b) {
        this.a = a;
        this.a = b;
        this.c = "" + a + b + "";
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public String getC() {
        return c;
    }   
}   

我有一个 HashMap ,基本上 Object.getC() 应该是字符串中的 a + b。 在其他一些类中,我需要获取 c 值,如果该 hashmap 集合索引具有完全相同的 c 值,它将删除该索引:

public static void deleteChest() {
    for (int i = 0; i < data.size(); i++) {
        if (data.get(i).getItems().length == 0) {
            Object c = new Object(data.get(i).getA(), data.get(i).getB());
            map.remove(c);
        }
    }
}

数据 HashMap 应该与 map HashMap 具有相同的索引号,所以如果您想知道它是什么。

基本上,我循环遍历所有数据 HashMap 项(获取 A、B,然后如果 C 位于另一个 HashMap (映射)内则进行匹配)。

现在是提问时间

如何检查对象是否包含(存在)或删除它(不是通过索引,而是通过键)?我该如何做到这一点(上面的示例)。

最佳答案

您应该为您的类定义 equalshashCode 方法。

否则,您将退回到检查对象标识的默认实现,即两个引用是否指向相同的内存位置,而不是指向包含相同数据的两个对象。

关于Java 从 hashmap 中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592638/

相关文章:

java - 无法初始化空白的最终字段

java - 如何使用java程序在windows中监控tcp统计信息

java - 从 hashmap 打印一个值到屏幕 - 一次打印多个值?

rust - 如何使用从其他两个 HashMap 移动的值创建一个 HashMap?

android - resolveUri 在错误的位图 uri : android. graphics.Bitmap@40566318 上失败...在 android ListView 中

java - Firebase 错误 - 无法在 Android Studio 中计算属性 'extraGeneratedResDir' 的值

java - "java.lang.OutOfMemoryError: Java heap space"到底是什么?我该如何增加 Java 的内存?

java - 如何将内容从以前的 hashmap 传输到新的 hashmap?

java - 无论如何要在 Java HashMap 中有两个相同的键,但值不同?

java - 在 Install4j 中创 build 置时将 Java 应用程序启动