gpt4 book ai didi

java - 从 HashMap 获取值的问题

转载 作者:行者123 更新时间:2023-11-29 03:53:44 27 4
gpt4 key购买 nike

大家好,我正在使用 HashMap 通过字符串键保存我的对象之一。当我用一个键放置一个对象时没有问题,当我放置第二个对象时我添加了我的对象但不能用它的键获取它。它有点去“下一个”的地方。我从下面的 Debug模式 (eclipse) 中截取了屏幕截图

enter image description here

虽然 size 显示为 2,但我在 hashmap 中看不到我的第二项,而是在其他 hashmap 的下一个节点中。

要注意的是,我在“name.tag”的形式中使用了我的 key ,同一时间的标签和名称永远不会相同,但“标签”可以相同。在评估 key 时,hashmap 是否与点运算符有关?希望能写清楚,

提前致谢

编辑:这是我用来创建 HashMap 的一段代码

        private HashMap<String,ParameterItem> parseParametersNode(DataModel parent,Element element){
NodeList parameterChilds=element.getChildNodes();//gep element parameters
HashMap<String, ParameterItem> parameterItems=new HashMap<String, ParameterItem>();
for(int i=0;i<parameterChilds.getLength();i++){
if(parameterChilds.item(i).getNodeType()==Node.ELEMENT_NODE){
Element el=(Element) parameterChilds.item(i);
NamedNodeMap atts=el.getAttributes();
ParameterItem item=new ParameterItem();

for(int j=0;j<atts.getLength();j++){
Attr attribute=(Attr) atts.item(j);
String attributeValue=attribute.getValue();
String attributeName=attribute.getName();
item.setParsedProperty(attributeName, attributeValue);
} /*check attributes later*/
//finish loop and insert paramitem to params
String key="key"+i;
if(item.getTag()!=null && item.getName()!=null)
key=item.getName()+"."+item.getTag();
parameterItems.put(key, item);
// testParam=item;
// parameterItems.put(key, testParam);
}
}
return parameterItems;

}

最佳答案

这里真的没有问题:你有一个 hash collision .也就是说,您的两个 key 都已放在同一个哈希桶中。看起来你只有四个桶(奇怪,我认为初始默认值是 10 或 16),所以随机数据的可能性是 25%。你的尺寸增加得很好。 next 是内部实现指向同一个桶中的下一个元素的方式。如果每个桶中的元素数量太大,Java 将在内部重新散列到更多桶中。

我不明白为什么您需要 HashTable 在这里,因为您正在连续编号您的键(您可以使用 ArrayList),但也许这只是入门代码,您的实际用例是不同的。

关于java - 从 HashMap 获取值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504519/

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