আপনি যদি কাঁচা অ্যারে সঙ্গে কাজ করতে হবে এবং যদি ArrayList
তারপর Arrays
আপনার যা প্রয়োজন হয়েছে। যদি আপনি উত্স কোডটি লক্ষ্য করেন তবে এগুলি হ'ল একটি অ্যারের অনুলিপি পাওয়ার সেরা উপায়। তাদের প্রতিরক্ষামূলক প্রোগ্রামিংয়ের পরিমাণ ভাল আছে কারণ System.arraycopy()
আপনি যদি অযৌক্তিক পরামিতিগুলি খাওয়ান তবে পদ্ধতিটি প্রচুর পরিমাণে চেক করা ব্যতিক্রম ছুঁড়ে দেয়।
আপনি Arrays.copyOf()
যেটি ব্যবহার করতে পারেন যা প্রথম থেকে Nth
নতুন সংক্ষিপ্ত অ্যারেতে অনুলিপি করবে ।
public static <T> T[] copyOf(T[] original, int newLength)
নির্দিষ্ট অ্যারে, ছাঁটাই বা নাল দিয়ে প্যাডিং অনুলিপি (প্রয়োজনীয় হলে) অনুলিপি করে তাই অনুলিপিটির নির্দিষ্ট দৈর্ঘ্য রয়েছে। সমস্ত সূচকগুলির জন্য যা মূল অ্যারে এবং অনুলিপি উভয় ক্ষেত্রেই বৈধ, দুটি অ্যারেতে অভিন্ন মান থাকবে। অনুলিপিটিতে বৈধ যে কোনও সূচকের জন্য তবে মূলটি নয়, অনুলিপিটি শূন্য থাকবে। যদি নির্দিষ্ট দৈর্ঘ্য মূল অ্যারের চেয়ে বেশি হয় তবেই এই জাতীয় সূচকগুলি উপস্থিত থাকবে। ফলাফল অ্যারে হুবহু মূল অ্যারে হিসাবে একই বর্গ।
2770
2771 public static <T,U> T[] More ...copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
2772 T[] copy = ((Object)newType == (Object)Object[].class)
2773 ? (T[]) new Object[newLength]
2774 : (T[]) Array.newInstance(newType.getComponentType(), newLength);
2775 System.arraycopy(original, 0, copy, 0,
2776 Math.min(original.length, newLength));
2777 return copy;
2778 }
বা Arrays.copyOfRange()
কৌশলটিও করবে:
public static <T> T[] copyOfRange(T[] original, int from, int to)
নির্দিষ্ট অ্যারের নির্দিষ্ট রেঞ্জটিকে একটি নতুন অ্যারেতে অনুলিপি করে। ব্যাপ্তির প্রাথমিক সূচকটি (থেকে) অবশ্যই শূন্য এবং আসল দৈর্ঘ্যের মধ্যে থাকা উচিত। আসল [থেকে] মানটি অনুলিপিটির প্রাথমিক উপাদানটিতে স্থাপন করা হয় (যদি না == আসল দৈর্ঘ্য বা == থেকে)। মূল অ্যারেতে পরবর্তী উপাদানগুলির মানগুলি অনুলিপিটিতে পরবর্তী উপাদানগুলিতে স্থাপন করা হয়। পরিসীমা (থেকে) এর চূড়ান্ত সূচক, যা অবশ্যই এর চেয়ে বড় বা সমান হতে হবে, মূল. দৈর্ঘ্যের চেয়ে বৃহত্তর হতে পারে, সেক্ষেত্রে অনুলিপিটি অনুলিপিটি অনুলিপি করা হয় অনুলিপিটি অনুলিপিটির অনুলিপিটির মূল উপাদানটির চেয়ে বড় বা সমান। দৈর্ঘ্য - থেকে। ফিরে আসা অ্যারের দৈর্ঘ্য হবে - থেকে। ফলাফল অ্যারে হুবহু মূল অ্যারে হিসাবে একই বর্গ।
3035 public static <T,U> T[] More ...copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) {
3036 int newLength = to - from;
3037 if (newLength < 0)
3038 throw new IllegalArgumentException(from + " > " + to);
3039 T[] copy = ((Object)newType == (Object)Object[].class)
3040 ? (T[]) new Object[newLength]
3041 : (T[]) Array.newInstance(newType.getComponentType(), newLength);
3042 System.arraycopy(original, from, copy, 0,
3043 Math.min(original.length - from, newLength));
3044 return copy;
3045 }
আপনি দেখতে পাচ্ছেন যে, উভয়ই System.arraycopy
রক্ষণাত্মক যুক্তি দিয়ে কেবল মোড়কের কাজ করে যা আপনি যা করার চেষ্টা করছেন তা বৈধ।
System.arraycopy
অ্যারে অনুলিপি করার পরম দ্রুততম উপায়।