gpt4 book ai didi

java - 如何合并 2 个对象列表,但当有 2 个对象重复时,它会将两者合并并更改数量?

转载 作者:行者123 更新时间:2023-12-01 23:50:31 25 4
gpt4 key购买 nike

我有 2 个包含产品的订单列表。

我需要当你合并列表时,如果它包含完全相同的产品,则更改一个的数量并删除另一个

我尝试了 2 个嵌套的 for,但似乎不起作用

for (ProductoSolicitado p: lista1) {
for (int i = 0; i < lista1.size(); i++) {
if (p.getIdProducto().equals(lista1.get(i).getIdProducto())) {
p.setCantidad(p.getCantidad() + lista1.get(i).getCantidad());
lista1.get(i).setIdProducto("0");
lista2.add(p);
lista2.add(lista1.get(i));
}
}
}

for (ProductoSolicitado p: lista2) {
if (!p.getIdProducto().equals("0")) {
lista3.add(p);
}
}

最佳答案

假设您想要将 lista2 产品合并到 lista1 并且您有 3 个产品。

P1 - P3 在 lista1 中,P2 - P3 在 lista2 中

List<Product> lista1 = new ArrayList<>();
List<Product> lista2 = new ArrayList<>();
Product p1 = new Product();
p1.setCantidad(1);
p1.setIdProducto("1");
Product p2 = new Product();
p2.setCantidad(1);
p2.setIdProducto("2");
Product p3 = new Product();
p3.setCantidad(1);
p3.setIdProducto("3");

lista1.add(p1);
lista1.add(p3);
lista2.add(p2);
lista2.add(p3);
//Loop lista1
for (Product lista1Product:lista1){
//Use iterator to easily remove items from list 2
Iterator<Product> i = lista2.iterator();
while (i.hasNext()){
Product lista2Product = i.next();
if (lista1Product.getIdProducto()!=null &&
lista1Product.getIdProducto().equals(lista2Product.getIdProducto())){
//Found same productID. Increase the quantity
lista1Product.setCantidad(lista1Product.getCantidad()+lista2Product.getCantidad());
//Remove from lista2
i.remove();
}
}
}
System.out.println("Lista1: " + lista1.toString());
System.out.println("Lista2: " + lista2.toString());

输出是:

Lista1: [Product{IdProducto='1', cantidad=1}, Product{IdProducto='3', cantidad=2}]
Lista2: [Product{IdProducto='2', cantidad=1}]

关于java - 如何合并 2 个对象列表,但当有 2 个对象重复时,它会将两者合并并更改数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58222155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com