我有2个包含产品的订单清单。
我需要在合并列表时使用,如果它包含完全相同的产品,则更改其中一个的数量并删除另一个
我尝试了2个嵌套的fors,但似乎不起作用
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);
}
}
答案 0 :(得分:0)
假设您要将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}]
答案 1 :(得分:0)
这是使用嵌套器进行循环处理的一种方法,lista2将是组合列表,lista1将删除重复项(id设置为0)。
for (ProductoSolicitado product1: lista1) {
boolean found = false;
for (ProductoSolicitado product2: lista2) {
if (product1.getIdProducto().equals(product2.getIdProducto())) {
product2.setCantidad(product1.getCantidad() + product2.getCantidad());
product1.setIdProducto("0");
found = true;
break;
}
}
if(!found){
lista2.add(product1);
}
}
答案 2 :(得分:0)
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Product> l1 = new ArrayList<Product>();
l1.add(new Product("PEN", 10));
l1.add(new Product("BALL", 505));
l1.add(new Product("CAP", 88));
List<Product> l2 = new ArrayList<Product>();
l2.add(new Product("PEN", 9));
l2.add(new Product("Apple", 10));
int count =0;
boolean found = false;
for(int i=0;i<l2.size();i++) { // looping the second list
count = 0;
found = false;
for(int j=0; j<l1.size(); j++) { // looping the first list and checking whether the
//same product code exist in the second list or not
// if found the same product code then getting the quantity and adding the quantity
// updating the new quantity value into first list
//updating the flage value
if(l1.get(j).getProductCode().equalsIgnoreCase(l2.get(i).getProductCode())) {
count = l1.get(j).getQuantity() +l2.get(i).getQuantity();
l1.get(j).setQuantity(count);
found = true;
break;
}
}
if(!found) // if the product from second list not found in first list then this flag value false.
// then adding this product into first list
{
l1.add(l2.get(i));
}
}
for(Product obj :l1) {
System.out.println(obj.getProductCode() +" :" +obj.getQuantity());
}
}
输出: 笔:19 球:505 帽数:88 苹果:10