Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java (哈希-)映射有条目,get传递空值_Java_Android_Map - Fatal编程技术网

Java (哈希-)映射有条目,get传递空值

Java (哈希-)映射有条目,get传递空值,java,android,map,Java,Android,Map,我不知道这里发生了什么。我有一个HashMap,其键集大小为4: steps.keySet() (java.util.HashMap$KeySet) [INIT_FZLIST, INIT_DATA, INSTALL_DATABASE, PROMPT_GERAETEID] INIT_FZLIST、INIT_DATA、INSTALL_DATABASE和PROMPT_gerateid是枚举的值 此外,entrySet还提供了4个条目 steps.entrySet() (java.util.HashM

我不知道这里发生了什么。我有一个HashMap,其键集大小为4:

steps.keySet()
(java.util.HashMap$KeySet)
[INIT_FZLIST, INIT_DATA, INSTALL_DATABASE, PROMPT_GERAETEID]
INIT_FZLIST、INIT_DATA、INSTALL_DATABASE和PROMPT_gerateid是枚举的值

此外,entrySet还提供了4个条目

steps.entrySet()
(java.util.HashMap$EntrySet)
[INIT_FZLIST=de.ansat.terminal.activity.widgets.PendingCheckbox{b50cb4e0 V.E..... ......I. 24,524-456,666},
 INIT_DATA=de.ansat.terminal.activity.widgets.PendingCheckbox{b50c8748 V.E..... ......I. 24,350-456,524},
 INSTALL_DATABASE=de.ansat.terminal.activity.widgets.PendingCheckbox{b508e288 V.E..... ......I. 24,68-456,209},
 PROMPT_GERAETEID=de.ansat.terminal.activity.widgets.PendingCheckbox{b50c59b0 V.E..... ......I. 24,209-456,350}]
但如果我这样做:

steps.get(INSTALL_DATABASE)
 null
映射返回null,因此如果我尝试使用结果对象,就会得到一个nullpointerexception

这是在Android活动中运行的。 我在API级别17上使用Android 4.2.2

[编辑]

private Map<InstallSteps, PendingCheckbox> steps = new HashMap<InstallSteps, PendingCheckbox>();
有人知道是什么导致了这种行为吗?我完全卡住了。 任何提示都将不胜感激

您可以使用而不是
HashMap

用于枚举类型键的专用映射实现。枚举映射中的所有键必须来自在创建映射时显式或隐式指定的单个枚举类型

就您的代码而言,请记住:

  • 映射中对象的
    hashCode
    在添加到映射后不应更改。需要很好地实现
    equals()
    hashCode()

  • 检查您是否在
    获取(键)
    对象的值之前实际
    放置(键、值)
    键的对象


  • 可能在get之前更改了步骤,或者PUT在以后发生,或者您有两个步骤声明。

    什么是安装数据库,枚举?一串变量?什么类型的“INSTALL_DATABASE”?抱歉:私有枚举InstallSteps{INSTALL_DATABASE,PROMPT_gerateid,INIT_DATA,INIT_FZLIST,}当对同一对象的两个调用之间的
    hashcode()
    /
    equals()
    方法不一致时,可能会发生这种行为。你能发布完整的枚举类内容吗?不,我没有。应该吗?hashCode()和equals(…)方法是枚举中的最终方法。它们就是不能被推翻。它甚至没有意义,因为枚举的值是单例的。@Seelenvirtuose谢谢;删除了保留w.r.t.哈希代码(很难无意中生成一个不起作用的哈希代码)。1)我使用了Eclipse。PendingCheckbox的字段是Android视图和另一个枚举值。所以它应该是正确的。2) 可以看到步骤。entrySet()显示了映射中包含的键。
        PendingCheckbox installDb = new PendingCheckbox(InstallActivity.this);
        installDb.setText(INSTALL_DATABASE);
        installDb.setChecked(false);
        installDb.setLayoutParams(layoutParams);
        root.addView(installDb);
        steps.put(InstallSteps.INSTALL_DATABASE, installDb);