java我们可以用动态键和动态值创建hashmap吗?
我正在创建一个hashmap,如下所示:
HashMap <String,String> DtsFeed = new HashMap<String, String>();
我的密钥是动态的,值也是动态的
DtsFeed.put(Request.getRequestId(), feedtype);
可能吗
你可以在下面搜索框中键入要查询的问题!
我正在创建一个hashmap,如下所示:
HashMap <String,String> DtsFeed = new HashMap<String, String>();
我的密钥是动态的,值也是动态的
DtsFeed.put(Request.getRequestId(), feedtype);
可能吗
# 1 楼答案
您的示例很有效,但我建议添加泛型,尽管这不是必需的
地图。get()始终适用于普通对象,而不管贴图定义如何
但是请记住,为了使用它们,您必须从映射中强制转换返回的结果。(但您的解决方案存在潜在危险/不安全)
您还可以迭代entrySet()/keySet()
# 2 楼答案
如果“动态键”意味着键的内容在地图中时会发生变化,那么答案是您必须非常小心。如果键的
hashcode()
值在映射中发生更改,则不会发生任何好事。如果让这种情况发生,那么使用该键进行查找将无法找到条目如果让密钥的某些部分更改,但确保
equals()
和hashcode()
不更改,则查找将继续工作。我从未在实践中看到这一点我经常看到的是使用逻辑键的不变部分作为实际键。例如,我们可能有一个实体,它表示数据库中的一行,并且包含一个不会更改的ID值。您可以使用ID作为映射中的键(例如
Map<Long, Value>
而不是Map<Entity, Value>
)这通常不起作用:
这通常是有效的:
# 3 楼答案
您的意思是键和值都可以更改吗?您可以考虑IdditHasMMAP,它使用它们的引用而不是HASCODE()和均衡器()来比较键。p>
使用IdentityHashMap,您始终可以检索与键关联的值,即使该键可以更改状态