Java Lambda အသုံးအနှုန်းများ
Java Lambda အသုံးအနှုန်းများ
Lambda Expressions ကို Java 8 တွင် ထည့်သွင်းထားသည်။
lambda expression သည် parameters များကိုယူကာ တန်ဖိုးတစ်ခုပြန်ပေးသည့် ကုဒ်တိုတိုတစ်ခုဖြစ်သည်။ Lambda အသုံးအနှုန်းများသည် နည်းလမ်းများနှင့် ဆင်တူသော်လည်း ၎င်းတို့သည် အမည်တစ်ခု မလိုအပ်ဘဲ ၎င်းတို့ကို နည်းလမ်းတစ်ခု၏ ခန္ဓာကိုယ်တွင် မှန်ကန်စွာ အကောင်အထည်ဖော်နိုင်သည်။
အထားအသို
အရိုးရှင်းဆုံး lambda expression တွင် parameter တစ်ခုနှင့် expression တစ်ခုပါရှိသည်-
parameter -> expression
ကန့်သတ်ဘောင်တစ်ခုထက်ပို၍ အသုံးပြုရန် ၎င်းတို့ကို ကွင်းစဥ်များဖြင့် ခြုံပါ-
(parameter1, parameter2) -> expression
အသုံးအနှုန်းများသည် အကန့်အသတ်ရှိသည်။ ၎င်းတို့သည် တန်ဖိုးတစ်ခုကို ချက်ချင်းပြန်ပေးရမည်ဖြစ်ပြီး ၎င်းတို့တွင် ကိန်းရှင်များ၊ တာဝန်များ သို့မဟုတ် ထုတ်ပြန်ချက်များကဲ့သို့သော if
သို့မဟုတ် for
. ပိုမိုရှုပ်ထွေးသော လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန်အတွက်၊ ကုဒ်ဘလောက်တစ်ခုကို curly braces များဖြင့် အသုံးပြုနိုင်သည်။ lambda expression သည် တန်ဖိုးတစ်ခု ပြန်ရရန် လိုအပ်ပါက၊ code block တွင် return
ဖော်ပြချက်တစ်ခု ရှိသင့်သည်။
(parameter1, parameter2) -> { code block }
Lambda Expressions ကိုအသုံးပြုခြင်း။
Lambda အသုံးအနှုန်းများကို အများအားဖြင့် လုပ်ဆောင်ချက်တစ်ခုသို့ ကန့်သတ်ချက်များအဖြစ် ပေးပို့သည်-
ဥပမာ
စာရင်းထဲရှိ အရာတိုင်းကို ပရင့်ထုတ်ရန် ArrayList
's method ရှိ lamba expression ကို သုံး ပါ-forEach()
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
variable ၏ အမျိုးအစားသည် နည်းလမ်းတစ်ခုသာရှိသော interface တစ်ခုဖြစ်ပါက Lambda expression များကို variable များတွင် သိမ်းဆည်းထားနိုင်သည်။ lambda ဖော်ပြချက်တွင် တူညီသော ကန့်သတ်နံပါတ်များနှင့် ထိုနည်းလမ်းကဲ့သို့ တူညီသော return type ရှိသင့်သည်။ Java တွင် စာရင်းများအသုံးပြုသော အင်တာဖေ့စ် Consumer
(ပက်ကေ့ခ်ျတွင်တွေ့ရှိရသည် ) ကဲ့သို့သော ဤအင်တာဖေ့စ်အမျိုးအစားများစွာတွင် ထည့်သွင်းထားသည်။java.util
ဥပမာ
Consumer
ပြောင်းလဲမှုတစ်ခုတွင် lambda စကားရပ်ကို သိမ်းဆည်းရန် Java ၏ အင်တာဖေ့စ်ကို အသုံးပြုပါ။
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
နည်းလမ်းတစ်ခုတွင် lambda စကားရပ်ကို အသုံးပြုရန်၊ နည်းလမ်းသည် ၎င်း၏အမျိုးအစားအဖြစ် single-method interface ပါရာမီတာတစ်ခု ရှိသင့်သည်။ အင်တာဖေ့စ်၏နည်းလမ်းကိုခေါ်ဆိုခြင်းသည် lambda စကားရပ်ကို လုပ်ဆောင်လိမ့်မည်-
ဥပမာ
lambda expression ကို ကန့်သတ်ချက်တစ်ခုအဖြစ် ယူသည့် နည်းလမ်းတစ်ခုကို ဖန်တီးပါ-
interface StringFunction { String run(String str);
}public class Main { public static void main(String[] args) { StringFunction exclaim = (s) -> s + "!"; StringFunction ask = (s) -> s + "?"; printFormatted("Hello", exclaim); printFormatted("Hello", ask);
}public static void printFormatted(String str, StringFunction format) { String result = format.run(str); System.out.println(result);
}}