تم شرح عامل تشغيل السهم (->) في Java في هذه المقالة مع بعض نماذج التعليمات البرمجية لمساعدتك على فهم المفهوم.
تم تقديم عامل تشغيل السهم، الذي يُستخدم لإنشاء تعبيرات لامدا، جنبًا إلى جنب مع إضافة وظيفة تعبير لامدا في Java 8. فهو يقسم نص التعبير عن الوسائط.
(parameters) -> { statements; } // Lambda expression having arrow
لجعل كود Java أكثر إيجازًا وقابلية للفهم، يمكن استخدام تعبير lambda، الذي تم تقديمه بواسطة Java 8، في مكانه للفئات المجهولة.
يظهر أدناه رسم توضيحي لكيفية إنشاء فئة مجهولة باستخدام Java قبل Java 8.
كم مليون في المليار
Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } };
وإليك كيفية تنفيذ المهمة المذكورة أعلاه في Java 8 باستخدام تعبير لامدا.
Runnable r1 = ()-> System.out.print(' method Run ');
لفهم كيفية استخدام معاملات لامدا والسهم بشكل أفضل، فلنبدأ ببعض الأمثلة.
كيفية استخدام Arrow Operator في جافا؟
في هذا الرسم التوضيحي، تم تنفيذ طريقة draw() لكل من الواجهة القابلة للرسم باستخدام تعبير lambda وعامل السهم. انظر الرسم التوضيحي أدناه.
م.جافا
الكيان العلائقي
interface Drawable{ public void draw(); } public class M { public static void main(String[] args) { int w = 20; // arrow operator Drawable d=()->{ System.out.println(' Drawing width is '+w); }; d.draw(); } }
انتاج:
يمكننا استخدام تعبير لامدا في برمجة Java بعدة طرق لأنه أسلوب رائع لكتابة تعليمات برمجية موجزة باستخدام نهج وظيفي. فيما يلي العديد من الحالات حيث يمكننا استخدامها.
مشغل المصفوفة في مجموعة جافا
في هذا الرسم التوضيحي، نستخدم تعبير لامدا لتصفية البيانات من قائمة ArrayList. لتحقيق النتيجة المرجوة، استخدمنا طريقة filter() وstream API. يمكنك معرفة مدى سهولة كتابة كود لامدا مقارنة برمز لامدا. انظر الرسم التوضيحي أدناه.
كثافة العمليات لمضاعفة
M1.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; class P{ int id; String n; float pri; public P(int id, String n, float pri) { this.id = id; this.n = n; this.pri = pri; } } public class M1{ public static void main(String[] args) { List<p> l = new ArrayList</p><p>(); l.add(new P(1,' JavaTpoint ',17000)); l.add(new P(3,' Tutorial and example ',100500)); l.add(new P(2,' Website ',25000)); // using the arrow to filter data Stream</p><p> filtered_data = l.stream().filter(q -> q.pri > 17000); filtered_data.forEach( p -> System.out.println(p.n+': '+p.pri) ); } } </p>
انتاج:
العثور على سلسلة C ++
Tutorial and example: 100500.0 Website: 25000.0
عامل صفيف في موضوع جافا
من أجل تنفيذ طريقة run() لكل من الواجهة القابلة للتشغيل، استخدمنا تعبير lambda في هذه الحالة. يمكن استخدام تعبير lambda بسهولة لأن Runnable يحتوي على واجهة طريقة واحدة. انظر الرسم التوضيحي أدناه.
M3.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class M3{ public static void main(String[] args) { // using arrow operator Runnable r1=()->{ System.out.println(' Thread is running... '); }; Thread t1 = new Thread(r1); t1.start(); } }
انتاج:
Thread is running...