জেডিকে / ১১ এর সাহায্যে এটিকে রূপান্তর Collection<Foo>
করার একটি বিকল্প উপায় হিসাবে এটি Foo[]
ব্যবহার করা যেতে পারে Collection.toArray(IntFunction<T[]> generator)
:
Foo[] foos = fooCollection.toArray(new Foo[0]); // before JDK 11
Foo[] updatedFoos = fooCollection.toArray(Foo[]::new); // after JDK 11
দ্বারা ব্যাখ্যা হিসাবে মেইলিং তালিকা @Stuart (জোর খনি) এই কর্মক্ষমতা মূলত বিদ্যমান যে একই হওয়া উচিত Collection.toArray(new T[0])
-
উত্সাহটি হ'ল যে প্রয়োগগুলি ব্যবহার করে Arrays.copyOf(
) এটি দ্রুততম হয়, সম্ভবত এটি একটি অন্তর্গত ।
এটি নতুনভাবে বরাদ্দ হওয়া অ্যারে শূন্য-পূরণ করা এড়াতে পারে কারণ এটি জানে যে পুরো অ্যারের সামগ্রীগুলি ওভাররাইট করা হবে। পাবলিক এপিআইয়ের চেহারা নির্বিশেষে এটি সত্য।
জেডিকে-র মধ্যে এপিআইয়ের বাস্তবায়নটি পড়ে:
default <T> T[] toArray(IntFunction<T[]> generator) {
return toArray(generator.apply(0));
}
ডিফল্ট বাস্তবায়ন generator.apply(0)
শূন্য দৈর্ঘ্যের অ্যারে পেতে কল করে এবং পরে কেবল কল করে toArray(T[])
। এটি Arrays.copyOf()
দ্রুতগতির মধ্য দিয়ে যায় তাই এটি মূলত একই গতি toArray(new T[0])
।
দ্রষ্টব্য : -মানগুলিসহ কোডের জন্য যখনএপিআই ব্যবহার করা হবেতখন পশ্চাদপটে অসঙ্গতি সহ পরিচালনা করা হবেnull
যেমনtoArray(null)
এই কলগুলি এখন বিদ্যমান কারণে অস্পষ্টtoArray(T[] a)
এবং সংকলন করতে ব্যর্থ হবে।
Stream.toArray
জেডিকে থেকে বিদ্যমান এপিআইয়ের সাথে মেলে ।