تصف هذه المقالة طريقة تنفيذ Java للجمع بين صفيفتين في واحدة. شاركه للرجوع إليه ، على النحو التالي:
في Java ، كيفية دمج سلسلة اثنين [] في واحدة؟
يبدو أنه سؤال بسيط للغاية. ومع ذلك ، فإن كيفية كتابة الكود بكفاءة ودقة لا يزال يستحق التفكير فيه. فيما يلي أربع طرق ، يرجى الرجوع إلى الاختيار.
1. Apache-Commons
هذه هي أسهل طريقة. في Apache-Commons ، هناك طريقة ArrayUtils.addAll(Object[], Object[]) تتيح لنا القيام بذلك في سطر واحد:
String[] both = (String[]) ArrayUtils.addAll(first, second);
يحتاج الآخرون إلى استدعاء الأساليب المقدمة في JDK بنفسك ولفها.
للراحة ، سأقوم بتحديد سلسلة الأدوات التي يمكن أن تجمع بين صفيفتين معًا:
static String[] concat(String[] first, String[] second) {}
لغرض عام ، سأستخدم الأدوية الجينية لتحديد مكان الإمكان بحيث لا يمكن استخدام سلسلة [] فقط ، ولكن يمكن أيضًا استخدام أنواع أخرى من المصفوفات:
static <T> T[] concat(T[] first, T[] second) {}
بالطبع ، إذا كان JDK الخاص بك لا يدعم الأداء العام أو لا يمكنك استخدامه ، فيمكنك تغيير T إلى سلسلة يدويًا.
2. system.arraycopy ()
سلسلة ثابتة [] concat (string [] a ، string [] b) {string [] c = new string [A.Length+B.Length] ؛ System.ArrayCopy (A ، 0 ، C ، 0 ، A.Length) ؛ System.ArrayCopy (B ، 0 ، C ، A.Length ، B.Length) ؛ العودة c ؛}استخدم على النحو التالي:
سلسلة [] كلاهما = concat (الأول ، الثاني) ؛
3. المصفوفات.
في Java6 ، هناك Arrays.copyOf() ، وهي وظيفة عامة. يمكننا استخدامه لكتابة طريقة دمج أكثر عمومية:
static public <T> t [] concat (t [] first ، t [] second) {t [] result = arrays.copyof (first ، first.length + second.length) ؛ System.ArrayCopy (الثاني ، 0 ، النتيجة ، First.Length ، Second.length) ؛ نتيجة العودة ؛}إذا كنت ترغب في دمج متعددة ، يمكنك كتابة هذا:
static public <T> t [] concatall (t [] أولاً ، t [] ... rest) {int totAllength = first.length ؛ لـ (t [] Array: REST) {totAllength += array.length ؛ } t [] result = arrays.copyof (first ، totAllength) ؛ int الإزاحة = first.length ؛ لـ (t [] array: rest) {system.arrayCopy (Array ، 0 ، result ، roffset ، array.length) ؛ الإزاحة += Array.Length ؛ } نتيجة الإرجاع ؛}استخدم على النحو التالي:
String [] كلاهما = concat (الأول ، الثاني) ؛ سلسلة [] المزيد = concat (الأول ، الثاني ، الثالث ، الرابع) ؛
4. Array.newinstance
يمكنك أيضًا استخدام Array.newInstance لإنشاء صفيف:
ثابت خاص <T> t [] concat (t [] a ، t [] b) {Final int alen = A.Length ؛ مزيج int النهائي = B.Length ؛ if (alen == 0) {return b ؛ } if (blen == 0) {return a ؛ } النهائي t [] النتيجة = (t []) java.lang.reflect.array. NewInstance (A.GetClass (). getComponentType () ، alen + blend) ؛ System.ArrayCopy (A ، 0 ، result ، 0 ، alen) ؛ System.ArrayCopy (B ، 0 ، Result ، Alen ، Blend) ؛ نتيجة العودة ؛}لمزيد من المعلومات حول المحتوى المتعلق بـ Java ، يرجى مراجعة موضوعات هذا الموقع: "ملخص لمهارات تشغيل Array Java" ، "ملخص شخصيات Java ومهارات تشغيل السلسلة" ، "ملخص مهارات التشغيل Java للعمليات" ، "Tutorial on Java Data Hrustures and Legorithms"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.