gpt4 book ai didi

java - (Hash-)Map 有条目,get 传递 null

转载 作者:行者123 更新时间:2023-12-02 06:53:54 25 4
gpt4 key购买 nike

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

steps.keySet()
(java.util.HashMap$KeySet)
[INIT_FZLIST, INIT_DATA, INSTALL_DATABASE, PROMPT_GERAETEID]

INIT_FZLIST、INIT_DATA、INSTALL_DATABASE 和 PROMPT_GERAETEID 是枚举值。

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

map 返回 null,因此如果我尝试使用结果对象,我会得到一个 nullpointerException。

它正在 Android Activity 中运行。我使用的是 API 级别 17 的 Android 4.2.2

[编辑]

private Map<InstallSteps, PendingCheckbox> steps = new HashMap<InstallSteps, PendingCheckbox>();

是我的 Activity 类的一个字段。

我有几个 AsyncTasks 在该 map 上工作,因为它代表安装过程的进度。

PendingCheckbox 是一个扩展 LinearLayout 的 View 。

[编辑2]步骤是这样填写 onCreate(..) 的:

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

有人知道什么可能会导致这种行为吗?我完全被困住了。任何提示将不胜感激!

最佳答案

您可以使用EnumMap而不是 HashMap

A specialized Map implementation for use with enum type keys. All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is created.

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

  1. map 中对象的hashCode一旦添加到 map 中就不应更改。需要良好地实现 equals()hashCode()

  2. get(key)获取其值之前,检查您是否确实使用该keyput(key,value)一个对象.

关于java - (Hash-)Map 有条目,get 传递 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17650844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com