की एक धारा में दो क्षेत्रों योग मैं कुछ इस तरह है:जावा स्ट्रीम। वस्तुओं
Integer totalIncome = carDealer.getBrands().stream().mapToInt(brand -> brand.getManufacturer().getIncome()).sum();
Integer totalOutcome = carDealer.getBrands().stream().mapToInt(brand -> brand.getManufacturer().getOutcome()).sum();
कैसे मुझे लगता है कि में एक धारा लिख सकता है? एफई इकट्ठा करने के लिए Pair<Integer, Integer>
totalIncome
और totalOutcome
के साथ?
संपादित:
आप अपनी टिप्पणी, उत्तर, और भागीदारी के लिए लोगों को धन्यवाद। धाराओं का उपयोग कर उस समस्या के विभिन्न दृष्टिकोण के बारे में मुझे एक प्रश्न होगा। आप इसके बारे में क्या सोचते हैं:
final IncomeAndOutcome incomeAndOutcome = carDealer.getBrands()
.stream()
.map(Brand::getManufacturer)
.map(IncomeAndOutcome::of)
.reduce(IncomeAndOutcome.ZERO, IncomeAndOutcome::sum);
static class IncomeAndOutcome {
private static final IncomeAndOutcome ZERO = of(0, 0);
@Getter
private final int income;
@Getter
private final int outcome;
public static IncomeAndOutcome of(final int income, final int outcome) {
return new IncomeAndOutcome(income, outcome);
}
public static IncomeAndOutcome of(final Manufacturer manufacturer) {
return new IncomeAndOutcome(manufacturer.getIncome(), manufacturer.getOutcome());
}
IncomeAndOutcome(final int income, final int outcome) {
this.income = income;
this.outcome = outcome;
}
IncomeAndOutcome sum(final IncomeAndOutcome incomeAndOutcome) {
return of(this.income + incomeAndOutcome.getIncome(), this.outcome + incomeAndOutcome.getOutcome());
}
}
आप' लौट नई जोड़ी <> (totalIncome, totalOutcome) आपका मतलब है: लेकिन मामले में आप यह कर सकते हैं, शैक्षिक प्रयोजनों के लिए इस जानना चाहता था तुम? –
हां, लेकिन मुझे लगता है कि दो बार कॉलिंग स्ट्रीम कुशल नहीं है (पहली बार 'आय' और 'परिणाम' के लिए दूसरी बार)। और मैं सोच रहा था कि क्या मैं उनसे जुड़ सकता हूं, अंततः केवल एक धारा प्राप्त करने के लिए जो 'आय' और 'परिणाम' के योग को वापस लाती है? – user3529850
यदि आप चाहते हैं कि आप एक बार लूप के लिए उपयोग करें और दो फ़ील्ड के आधार पर दो रकम बढ़ाएं। – Pshemo