عند العمل مع هياكل البيانات، غالبًا ما تنشأ الحاجة إلى معالجة البيانات ومعالجتها بطرق مختلفة. أحد السيناريوهات الشائعة هو تحويل Iterator، وهو مجموعة متسلسلة من العناصر، إلى Stream، وهو خط أنابيب أكثر تنوعًا وقوة لمعالجة البيانات.
لتحقيق هذا التحويل بفعالية، من الضروري تجنب إنشاء نسخ من البيانات . وهذا غير فعال وغير ضروري، خاصة عند التعامل مع مجموعات البيانات الكبيرة.
أحد الأساليب هو استخدام فئة StreamSupport. يوفر طرقًا لإنشاء دفق من Iterable أو Spliterator. في هذه الحالة، يمكننا إنشاء Spliterator من Iterator باستخدام Spliterators.spliteratorUnknownSize(). إليك مثال:
Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream targetStream = StreamSupport.stream(
Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
false);
يتضمن خيار آخر إنشاء كائن قابل للتكرار من Iterator. Iterable هي واجهة وظيفية، وباستخدام lambdas، يمكننا بسهولة إنشاء Iterable من Iterator:
Iterable iterable = () -> sourceIterator;
Stream targetStream = StreamSupport.stream(iterable.spliterator(), false);
يمكن القول إن هذا الأسلوب أكثر قابلية للقراءة، لأنه يستخدم تصميم الواجهة الوظيفية. ومن خلال تجنب النسخ غير الضروري، يمكنك معالجة بياناتك بكفاءة مع الحفاظ على الأداء ووضوح التعليمات البرمجية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3