报错原因
在输出HashMap值的时候多次调用next函数,报错代码如下
Map<Integer, String> type = new HashMap<>();
for (GoodsType goodsType : typeList) {
if (!type.containsKey(goodsType.getId())) {
type.put(goodsType.getId(), goodsType.getType());
}
}
Iterator<Integer> iterator = type.keySet().iterator();
while(iterator.hasNext()){
if (goods.getTypeId().equals(iterator.next();)) {
System.out.println("\t " + type.get(iterator.next();));
}
}
解决方法
将代码修改如下即可
Map<Integer, String> type = new HashMap<>();
for (GoodsType goodsType : typeList) {
if (!type.containsKey(goodsType.getId())) {
type.put(goodsType.getId(), goodsType.getType());
}
}
Iterator<Integer> iterator = type.keySet().iterator();
while(iterator.hasNext()){
<!--修改的地方-->
Integer next = iterator.next();
if (goods.getTypeId().equals(next)) {
System.out.println("\t " + type.get(next));
}
}
将next()函数用Integer next = iterator.next();
暂时保存起来,防止多次调用。