4
ทำไมต้องใช้ combiner ในการลดเมธอดที่แปลง type ใน java 8
ฉันมีปัญหาในการทำความเข้าใจบทบาทที่combinerเติมเต็มในreduceวิธีสตรีมอย่างสมบูรณ์ ตัวอย่างเช่นรหัสต่อไปนี้ไม่ได้รวบรวม: int length = asList("str1", "str2").stream() .reduce(0, (accumulatedInt, str) -> accumulatedInt + str.length()); ข้อผิดพลาดในการคอมไพล์แจ้งว่า: (อาร์กิวเมนต์ไม่ตรงกัน; int ไม่สามารถแปลงเป็น java.lang.String) แต่รหัสนี้จะรวบรวม: int length = asList("str1", "str2").stream() .reduce(0, (accumulatedInt, str ) -> accumulatedInt + str.length(), (accumulatedInt, accumulatedInt2) -> accumulatedInt + accumulatedInt2); ฉันเข้าใจว่ามีการใช้วิธี combiner ในลำธารขนาน - ดังนั้นในตัวอย่างของฉันมันได้รวมเข้าด้วยกันสอง ints สะสมกลาง แต่ฉันไม่เข้าใจว่าทำไมตัวอย่างแรกไม่คอมไพล์โดยไม่มี combiner หรือวิธีที่ combiner …
142
java
java-8
java-stream