1

大学での最後のプロジェクトがほぼ終わりに近づいています。現在の記事のストックで inStock を制御しようとしています。

私の在庫には次の属性が含まれています。

int idMercaderia;
int cantidad;
int idSucursal;

InventarioタイプPOJOsを含む 2 つのリストがあります。

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

idMercaderiaデータベースに永続化する前に、両方の属性を比較したいと思います。それらが同じである場合は、別のエントリを作成せずcantidad、現在の在庫に数量を追加するだけでsaveOrUpdate()、別のエントリを作成するだけです。

私は本当にこの部分で立ち往生しており、両方のリストを反復しようとした後、現在アイデアが不足していますが、在庫がわかりません。

ヘルプ/コードをいただければ幸いです。

4

2 に答える 2

1

最初のリストの a を作成して、 anを oneMap<Integer, Inventario>にマップします。次に、2 番目のリストを繰り返し、各アイテムについてマップ内の対応するアイテムを確認します。idMercaderiaInventario

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 
   }
}
于 2013-10-23T07:19:55.223 に答える
1

そこで比較するためにequals()まだメソッドが発生していない場合は、メソッドを実装する必要があります。それからInventarioidMercaderia

for(Inventario item: stock){
   if(inStock.contains(item)){
       item.cantidad++;  
   }
}
于 2013-10-23T07:09:41.733 に答える