如何检索存储在地图值中的对象?

时间:2015-06-19 08:00:59

标签: java dictionary

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实例

请帮我修复此代码!

3 个答案:

答案 0 :(得分:1)

您无法迭代EntryEntry是一对(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())