HashMap的奇怪问题
public static HashMap parse(InputStream in) throws Exception {
HashMap propertyMap = new HashMap();
SAXReader reader = new SAXReader();
Document document = reader.read(in);
Element root = document.getRootElement();
Iterator i = root.elementIterator( "windowId ");
while(i.hasNext()) {
Element windowElement = (Element) i.next();
Attribute attribute = windowElement.attribute( "name ");
String windowId = attribute.getStringValue();
List propertyList = new ArrayList();
for (Iterator j = windowElement.elementIterator( "property " );j.hasNext();){
Element propertyElement = (Element) j.next();
propertyList.add(propertyElement.getStringValue());
}
System.out.println(windowId);
for(int k=0;k <propertyList.size();k++){
System.out.println(propertyList.get(k));
}
propertyMap.put(windowId,propertyList);
}
return propertyMap;
}
从配置文件中读取每个windowId的property属性值,将windowId作为key,
该windowId的property组成的list为value,存进HashMap中,
从console输出的信息看,读取文件不存在任何问题,且每个windowId均不相同,为何存放了10次,而最后HashMap中只有8个呢?
[解决办法]
顶你
[解决办法]
ding
[解决办法]
帮忙顶
[解决办法]
主你把存放的值和出的值比一下就知道了
不是有相同的值,然後只存放了一。
[解决办法]
好像HashMap不允许有相同的key。
[解决办法]
存放第10个时会覆盖掉第8个,每次debug都这样
[解决办法]
mark
[解决办法]
那你用Hashtable测试下
相对于HashMap Hashtable是线程安全的
[解决办法]
帮忙顶
[解决办法]
可以把输入文件贴上来看下嘛
[解决办法]
sysout(windowID);
[解决办法]
你打印的值分不清哪个是windowID,每次输出windowID看看,应该是这个有重复,或者都是null值,否则不可能覆盖的。
[解决办法]
靠,看清楚楼主的话再回答阿
System.out.println(windowId);
for(int k=0;k <propertyList.size();k++){
System.out.println(propertyList.get(k));
}
-------------------------------------------
============Gen0010XXXXX=============
materialName
averageSize
quantity
packagedForm
expectedDate
============Gen0020XXXXX=============
supplierDeliveryDate
orderNo
materialName
averageSize
orderAmount
unit
unitCost
amount
resultMessage
============Gen0030XXXXX=============
arrivalQuantity
markerLotNo
division
loss
orderNo
materialName
averageSize
orderAmount
unit
unitCost
amount
resultMessage
============Gen0040XXXXX=============
checkIsPassed
arrivalDate
makerLotNo
resultMessage
issueQuantity
materialName
averageSize
arrivalQuantity
unit
============Gen0050XXXXX=============
factoryLotNo
============Gen0060XXXXX=============
materialName
averageSize
usedQuantity
============Gen0070XXXXX=============
orderNo
orderDate
quantity
paymentDate
============Gen0080XXXXX=============
stubNo
materialName
averageSize
remainer
============Gen0090XXXXX=============
factoryLotNo
bottleNo
materialName
averageSize
arrivalDate
quantity
resultMessage
============Gen0100XXXXX=============
makerLotNo
materialName
averageSize
以上说明这些key阿 value都是没有问题的
但是做propertyMap.put(windowId,propertyList);时丢失了。。。。。。