मैं दो छोटी सरणियों को एक साथ रखने वाली वस्तुओं की एक नई सरणी बनाना चाहता हूं।
वे शून्य नहीं हो सकते, लेकिन आकार 0 हो सकते हैं।
मैं इन दो तरीकों के बीच नहीं चुना जा सकता है: क्या वे समकक्ष हैं या एक और अधिक कुशल है (उदाहरण के लिए system.arraycopy () प्रतियां पूरे विखंडू)?
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
System.arraycopy(publicThings, 0, things, 0, publicThings.length);
System.arraycopy(privateThings, 0, things, publicThings.length, privateThings.length);
या
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
for (int i = 0; i < things.length; i++) {
if (i<publicThings.length){
things[i] = publicThings[i]
} else {
things[i] = privateThings[i-publicThings.length]
}
}
क्या केवल अंतर कोड का रूप है?
संपादित करें: जुड़े हुए प्रश्न के लिए धन्यवाद, लेकिन वे एक अनसुलझी चर्चा है:
क्या यह वास्तव में तेज़ है अगर it is not for native types: बाइट [], वस्तु [], चार []? अन्य सभी मामलों में, एक प्रकार की जांच निष्पादित की जाती है, जो मेरा मामला होगा और इसलिए समतुल्य होगा ... नहीं?
एक अन्य जुड़े हुए प्रश्न पर, वे कहते हैं कि the size matters a lot, आकार के लिए> 24 system.arraycopy () जीतता है, 10 से छोटे के लिए, लूप के लिए मैनुअल बेहतर है ...
अब मैं वास्तव में भ्रमित हूँ।



arraycopy()एक देशी कॉल है, जो निश्चित रूप से सबसे तेज है।