Set<Entry<Integer, InventoryStock>> inventoryData=
Set<Map.Entry<Integer,InventoryStock>>) ois.readObject();
for( Entry<Integer, InventoryStock> list:inventoryData) {
for(InventoryStock stock:list)
if(stock!=null){
System.out.println("Item id" + stock.getItemID()+" "+stock);
map.putIfAbsent(stock.getItemID(), stock);
}
我从inventoryData
文件中选择.ser
集,现在我需要访问地图的值(inventorystock
个对象),我需要将其分配给另一个地图。这是第二个增强的循环显示错误:
错误:只能迭代第二个for循环中的数组或java.lang.Iterable实例
请帮我修复此代码!
答案 0 :(得分:1)
您无法迭代Entry
。 Entry
是一对(key, value)
,因此要从InventoryStock
获取(单数)Entry
,您必须使用getValue
。
for( Entry<Integer, InventoryStock> entry : inventoryData) {
InventoryStock stock = entry.getValue();
if (stock != null) {
...
答案 1 :(得分:0)
您的变量
list
(在这种情况下该名称具有误导性)不是容器 - 您无法迭代它。 尝试像
这样的东西for( Entry<Integer, InventoryStock> listItem:inventoryData) {
InventoryStock myStock = listItem.getValue();
if (...) {
//
}
}
答案 2 :(得分:0)
Entry<Integer, InventoryStock>
只是(键,值)对,不可迭代。如果您的InventoryStock
是可迭代的,并且您想迭代它,则必须首先从条目获取它。 InventoryStock
是一个值,因此请使用方法entry.getValue()
来获取它:
for( Entry<Integer, InventoryStock> entry :inventoryData) {
for(InventoryStock stock: entry.getValue())