>source

다음 속성이있는 제품 클래스 목록이 있습니다.

public class Products{
private int month;
private int year;
private int sku;
private String detail;
private Double quantity;
private Double price;
private Double discount;
private Double %discount;
    //getters and setters
static List<Products> sumProduct(List<Products> itemList) {
List<Product> tempListP= new ArrayList<Product>();
    Collections.sort(itemList, Comparator.comparing(Product::getYear)
            .thenComparing(Product::getMonth).thenComparing(Product::getSku));
    Integer itemCode= null;
    double quantiti= 0;
    double price= 0;
    double discount= 0;
    double %discount= 0;
    Products itemObj= null;
    Integer itemMonth= null;
    Integer itemYear= null;
        for (int i= 0; i < itemList.size(); i++) {
            if (itemCode== null || (itemCode.equals(itemList.get(i).getSku())  &amp;
&amp;
 itemMonth.equals(itemList.get(i).getMonth()) &amp;
&amp;
 itemMonth.equals(itemList.get(i).getYear())  )) {
                quantiti= quantiti + itemList.get(i).getquantiti();
                price= price + itemList.get(i).getprice();
                discount= discount + itemList.get(i).getdiscount();
                %discount= %discount + itemList.get(i).get%discount();
                itemMonth= itemList.get(i).getMonth();
                itemYea= itemList.get(i).getYear();
            } else {
                itemObj= new Product( itemList.get(i).getMonth(), itemList.get(i).getYear(), itemCode, "" , quantiti, price,discount,%discount);
                if (tempListP.contains(itemObj)) {
                    tempListP.remove(itemObj);
                }
                tempListP.add(itemObj);
                quantiti= 0;
                quantiti= quantiti + itemList.get(i).getquantiti();
                price= 0;
                price= price + itemList.get(i).getprice();
                discount= 0;
                discount= discount + itemList.get(i).getdiscount();
                %discount= 0;
                %discount= %discount + itemList.get(i).get%discount();
                itemMonth= itemList.get(i).getMonth();
                itemYea= itemList.get(i).getYear();
            }
            itemCode= itemList.get(i).getSku();
            if (i== itemList.size() -1) {
                itemObj= new Product( itemList.get(i).getMonth(), itemList.get(i).getYear(), itemCode, "" , quantiti, price,discount,%discount);
                tempListP.add(itemObj);
            }
    }
    return itemList;
}
}

주요

public static void main(String[] args) {
   List<Products> items= new ArrayList<Products>();
   items.add(new Products(8,2020,10203040,"Tshirt",1,10.00,1.00,0.1));
   items.add(new Products(9,2020,10203040,"Tshirt",2,20.00,2.00,0.2));
   items.add(new Products(3,2021,10203040,"Tshirt",3,30.00,3.00,0.3));
   items.add(new Products(7,2020,50607080,"Tshirt",4,40.00,4.00,0.4));
   items.add(new Products(8,2020,10203040,"Tshirt",5,50.00,5.00,0.5));
   items.add(new Products(8,2021,10203040,"Tshirt",8,80.00,8.00,0.8));
  Products.sumProduct(items);

입력

Month | Year | Sku | Detail | Quantity | Price | Discount | % Discount
8 | 2020 | 10203040 | Tshirt | 1 | 10 | 1 | 0.1
9 | 2020 | 10203040 | Tshirt | 2 | 20 | 2 | 0.2
3 | 2021 | 10203040 | Tshirt | 3 | 30 | 3 | 0.3
7 | 2020 | 50607080 | Tshirt | 4 | 40 | 4 | 0.4
8 | 2020 | 10203040 | Tshirt | 5 | 50 | 5 | 0.5
8 | 2021 | 10203040 | Tshirt | 8 | 80 | 8 | 0.8

최종 결과는 다음과 같아야합니다.

출력 :

Month | Year | Sku | Detail | Quantity | Price | Discount | % Discount
7 | 2020 | 50607080 | Tshirt | 4 | 40 | 4 | 0.4
8 | 2020 | 10203040 | Tshirt | 6 | 60 | 6 | 0.6
9 | 2020 | 10203040 | Tshirt | 2 | 20 | 2 | 0.2
3 | 2021 | 10203040 | Tshirt | 3 | 30 | 3 | 0.3
8 | 2021 | 10203040 | Tshirt | 8 | 80 | 8 | 0.8

제품 목록을 통과하고 같은 달, 연도 및 SKU가있는 항목의 가치를 합산하고 수량, 가격, 할인, % 할인의 합계 목록을 반환하는 기능을 작성하고자합니다.

그러나 위의 code에 계산 및 합계를 어떻게 연결합니까? 특히 3 개 이상의 분야 (월, 년 및 SKU)로 그룹을위한 것입니다. 이 일을하는 더 좋은 방법이 있습니까?

정말로 값을 합계하는 데 도움이 필요합니다. 목록의 요소를 그룹화하는 것뿐만 아니라

도움을 위해 미리 감사드립니다.

  • 이전 php : 클래스 DateTime의 객체를 문자열로 변환 할 수 없습니다.
  • 다음 스파크 작업 최적화 spark.sql.hive.FileSourcePartitionFileCacheSize