में दो सरणी जोड़ी को गठबंधन करने का सुरुचिपूर्ण तरीका BiFunction
द्वारा दो जेनेरिक सरणी जोड़ों को जोड़ना पसंद है। शायद Java 8 Stream
साथ -जावा 8
<A,B,C> C[] combine(A[] as, B[] bs, BiFunction<A,B,C> op) {
if (as.length == bs.length) {
C[] cs = (C[]) new Object[as.length];
for(int i = 0; i < as.length; i++) {
cs[i] = op.apply(as[i], bs[i]);
}
return cs;
} else {
throw new IllegalArgumentException();
}
}
मुझे आश्चर्य है कि वहाँ यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका एक के लिए लूप के बिना है यदि: यहां आप अनुभवहीन कार्यान्वयन देखते हैं। मैं आपके सुझावों के बारे में खुश रहूंगा।
जबकि एओमिने ने आपके लूप के स्ट्रीम आधारित संस्करण प्रदान किए, मुझे नहीं लगता कि यह अधिक सुरुचिपूर्ण है। लेकिन यदि आप '.ेंज (..) 'के बाद' .parallel() 'जोड़ते हैं तो समानांतर प्रसंस्करण की संभावना खुलती है, इसलिए उस दृष्टिकोण का उपयोग मल्टीप्रोसेसर पर्यावरण में बेहतर हो सकता है। – Pshemo
आप गुवा के ['Streams.zip()'] का उपयोग कर सकते हैं (https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Streams.html#zip-java .util.stream.Stream-java.util.stream.Stream-java.util.function.BiFunction-)। – shmosel
आपको उस चेतावनी को दबाने नहीं देना चाहिए, बीटीडब्ल्यू। यह जल्दी या बाद में आपके चेहरे में उड़ना बाध्य है। – shmosel