java 8 Streams API를 사용하여 다른 목록에있는 동등한 항목의 특정 속성에 대한 모든 값을 어떻게 합계 할 수 있습니까? 예를 들어Java 8 스트림을 사용하여 다른 목록에있는 동일한 객체의 특정 속성을 어떻게 합계 할 수 있습니까?
, I는 다음과 같은 코드가 다음 List<PurchaseCancellation> cancellations
각 취소 PurchaseItemCancellation
의리스트를 가지고있는 취소 목록을 보유
public class Streams {
static class PurchaseItemCancellation {
private Integer id;
private BigDecimal quantity;
// constructor
// getters and setters
}
static class PurchaseCancellation {
private Integer id;
private List<PurchaseItemCancellation> purchaseItemsCancellations;
// constructor
// getters and setters
}
public static void main (String ... args) {
PurchaseItemCancellation item1 = new PurchaseItemCancellation(1, new BigDecimal("10.00"));
PurchaseItemCancellation item2 = new PurchaseItemCancellation(2, new BigDecimal("20.00"));
PurchaseItemCancellation item3 = new PurchaseItemCancellation(3, new BigDecimal("30.00"));
PurchaseItemCancellation item4 = new PurchaseItemCancellation(4, new BigDecimal("40.00"));
PurchaseCancellation purchaseCancellation1 = new PurchaseCancellation(1, Arrays.asList(item1, item2));
PurchaseCancellation purchaseCancellation2 = new PurchaseCancellation(2, Arrays.asList(item3, item4));
PurchaseCancellation purchaseCancellation3 = new PurchaseCancellation(3, Arrays.asList(item4, item1));
List<PurchaseCancellation> cancellations = Arrays.asList(purchaseCancellation1, purchaseCancellation2, purchaseCancellation3);
final Comparator<PurchaseItemCancellation> byID = (p1, p2) -> Integer.compare(p1.getId(), p2.getId());
// List<PurchaseItemCancellation> itemsCancellations = cancellations.stream() ....
}
}
단계;
그래서 각 취소에 포함 된 PurchaseItemCancellation
의 각 목록에 대해 동일한 항목의 속성 "수량"의 합계가 필요합니다.
항목 1 : ID : 1 수량 : 20.00
항목 2 : ID : 2, 수량
결과는 List<PurchaseItemCancellation>
있어야 20.00
항목 3 : ID : 3, 수량 : 30.00
item4 : ID : 4, 수량 : 80.00
실행 코드에서 볼 수 있습니다 :
http://www.tutorialspoint.com/compile_java8_online.php?PID=0Bw_CjBb95KQMREE4TEJxa080NFE
피씨 :이 사이트에는 두 가지 성가신 버그가 있습니다.
첫 번째 버그 : 링크를 클릭하면 "HelloWorld.java"파일이 열립니다. 이 파일을 닫고 왼쪽 사이드 바에 "Streams.java"라는 올바른 파일을 엽니 다. 실행 버튼은 편집기의 맨 위에 있습니다.
두 번째 버그 : 파일이 수정 된 경우 편집기 맨 위에있는 "코드 공유"버튼을 클릭하여 새 공유 링크를 생성해야합니다. 죄송합니다. 나는 더 나은 온라인 Java 8 코드 편집기를 모른다.
도움이 될 것입니다.
무엇이 당신의 질문입니까? – talex
어쩌면 충분히 명확하지 않았을 수 있습니다. 미안합니다. 내 질문을 편집했습니다. –