【发布时间】:2011-09-21 18:08:18
【问题描述】:
大家好,我正在使用 HashMap 来保存我的一个带有字符串键的对象。当我用键放置一个对象时,它没有问题,当我放置第二个对象时,我添加了我的对象,但无法用它的键获取它。某种程度上它去了“下一个”的某个地方。我在下面的调试模式(eclipse)中截取了截图
虽然 size 显示为 2,但我在 hashmap 中看不到我的第二项,但在其他 hashmap 的下一个节点中。
要注意我在“name.tag”形式中使用我的密钥,标签和名称不能同时相同,但“标签”可以相同。在评估键时,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;
}
【问题讨论】:
-
向我们展示您添加从地图中删除的东西的代码
-
您能否发布一些代码,特别是您如何将项目添加到地图以及如何获取项目。
-
可能两个键都是
equals -
我不认为与“。”有任何关系。在密钥中使用。分享您的代码以获取更多信息..
-
我已经添加了一些代码@jigar:不,伙计,键不等于,但是像“a.123”这样的键之一,另一个是“b.123”我不认为有这个问题
标签: java collections hashmap