如何迭代两个列表并比较其中的项目?

时间:2013-10-23 06:53:00

标签: java hibernate list compare

我差不多在大学的最后一个项目结束时,我正试图用我目前的文章库存来控制我的inStock。

我的库存包含以下属性:

int idMercaderia;
int cantidad;
int idSucursal;

我有两个包含Inventario类型POJO s:

的列表
List <Inventario> stock = new InventarioDAO().findAll();
List <Inventario> inStock = new ArrayList <Inventario>();

在保留数据库之前,我想比较两个属性idMercaderia,如果它们相同则不创建另一个条目,只需将数量cantidad添加到数据库中当前股票,如果不只是创建另一个条目,请执行saveOrUpdate()

我真的陷入了这一部分,并且在尝试迭代两个列表之后目前已经没有想法了但是我无法弄清楚库存的东西。

任何帮助/代码都将非常感激。

2 个答案:

答案 0 :(得分:1)

如果equals()中尚未发生Inventario方法,则需要实施idMercaderia方法来比较for(Inventario item: stock){ if(inStock.contains(item)){ item.cantidad++; } } 。那么

{{1}}

答案 1 :(得分:1)

创建第一个列表的Map<Integer, Inventario>,将idMercaderia映射到一个Inventario。然后迭代你的第二个列表并检查地图中相应项目的每个项目。

Map<Integer, Inventario> map = new HashMap<Integer, Inventario>();
for (Inventario item : stock) {
   map.put(item.getIdMercaderia(), item);
}

for (Inventario item : inStock) {
   int idMercaderia = map.getIdMercaderia();
   Inventario inventario = map.get(idMercaderia);
   if (inventario == null) {
      // error handling
      continue;
   }
   if (item.getCantidad() == inventario.getCantidad() {
      // handle 
   }
}