التجربة الأولى للتيار
يعد الدفق ميزة مهمة لمجموعات التشغيل في Java 8. دعنا نلقي نظرة أولاً على كيفية تعريف الدفق في Java:
"سلسلة من العناصر التي تدعم العمليات الإجمالية المتتابعة والمتوازية."
دعونا نفسر الجملة أعلاه:
1. الدفق عبارة عن مجموعة من العناصر ، مما يجعل الدفق يشبه التكرار ؛
2. يمكن أن تدعم عمليات تجميع الدفق الأصلي بالتسلسل والموازاة.
هناك العديد من الطرق لإنشاء دفق ، وهناك عدة طرق أخرى لإنشاء مجموعة بالإضافة إلى أكثر الطرق شيوعًا.
قائمة للدفق
ترث القائمة من واجهة التجميع ، وتوفر المجموعة طريقة Stream ().
قائمة <integer> list = lists.newarrayList (1 ، 2 ، 3) ؛ دفق <integer> Stream = list.stream () ؛
صفيف للتيار
بالنسبة للمصفوفات ، توفر المصفوفات طريقة الدفق ().
string [] arr = new string [] {"a" ، "b" ، "c"} ؛ دفق <STRING> DTROM = ARRYS.STREAM (ARR) ؛ خريطة للدفق
الخريطة ليست تسلسلًا ، وليس مجموعة ، ولا توجد طريقة لتحويلها مباشرة إلى Stream (). ولكن تم تعيين EntrySet () ، ويمكن تحويله.
خريطة <سلسلة ، كائن> map = maps.newhashmap () ؛ دفق <الإدخال <string ، object >> detram = map.entryset (). Stream () ؛
إنشاء دفق مباشرة
يوفر Stream أيضًا واجهة برمجة تطبيقات لإنشاء دفق مباشرة ، والذي يمكن فهمه تقريبًا كقائمة. لأنه يتم تنفيذ الداخلية بواسطة صفيف.
دفق <integer> imentegerstream = dream.of (1 ، 2 ، 3) ؛
اقرأ دفق الملف
أولئك الذين استخدموا Linux سيعجبون برموز الأنابيب على سطر الأوامر ، ويمكن معالجة رمز الأنابيب بشكل مستمر. يمكن تنفيذ وظائف مماثلة عند قراءة الملفات في Java.
Long Eniquewords = 0 ؛ Try (Dream <String> Lines = files.lines (paths.get ("data.txt") ، charset.defaultcharset ()))) توليد تدفق لا نهائي من خلال الوظائف
يوفر الدفق التكرار لإنشاء تسلسل لا حصر له ، وهو تسلسل لا حصر له يعتمد على القيمة الأولية. يمكنك استخدام Lambda لتعيين قواعد توليد التسلسل ، مثل إضافة 2 في كل مرة.
Stream.Itera (0 ، n -> n + 2) .limit (10). foreach (system.out :: println) ؛
على سبيل المثال ، تسلسل فيبوناتشي
Dream.IterAte (new int [] {0 ، 1} ، t -> new int [] {t [1] ، t [0] + t [1]}) .limit (20) .map (t -> t [0]). يوفر الدفق أيضًا طريقة توليد أخرى لإنشاء تسلسل. يتلقى وظيفة التسلسل التي تم إنشاؤها بواسطة المستخدم.
intSupplier FIB = new intsupplier () {private int previp = 0 ؛ Private Int Current = 1 ؛ Override public int getAsint () {int oldprevious = this.previous ؛ int nextValue = this.previous + this.current ؛ this.previous = this.current ؛ this.current = nextValue ؛ إرجاع Oldprevious. } ؛لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.