تحويل Stream إلى مصفوفة محدّدة النوع
حوّل Stream إلى مصفوفة محدّدة النوع باستخدام مرجع دالة.
مقارنة الكود
✕ Pre-Streams
List<String> list = getNames();
List<String> filtered = new ArrayList<>();
for (String n : list) {
if (n.length() > 3) {
filtered.add(n);
}
}
String[] arr = filtered.toArray(new String[0]);
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
آمن من حيث النوع
لا تحويل لـ Object[] — نوع المصفوفة صحيح.
قابل للتسلسل
يعمل في نهاية أي خط معالجة Stream.
موجز
تعبير واحد يستبدل الحلقة اليدوية.
الأسلوب القديم
تصفية يدوية + نسخ
الأسلوب الحديث
toArray(generator)
منذ JDK
8
الصعوبة
مبتدئ
دعم JDK
تحويل Stream إلى مصفوفة محدّدة النوع
متاح
متاح على نطاق واسع منذ JDK 8 (مارس 2014)
كيف يعمل
تُنشئ الدالة toArray(IntFunction) مصفوفةً محدّدة النوع من Stream. يُخبر المولّد (String[]::new) التدفقَ بنوع المصفوفة المراد إنشاؤها.
توثيق ذو صلة
إثبات