మాడ్యూల్ పాఠాలు (1/2)
లాంబ్డా వ్యక్తీకరణలు
జావా 8 నుండి ప్రారంభించి, ఫంక్షనల్ ప్రోగ్రామింగ్ లాంబ్డా ఎక్స్ప్రెషన్స్ ద్వారా మద్దతు ఇస్తుంది. లాంబ్డా వ్యక్తీకరణ అనేది తప్పనిసరిగా అనామక పద్ధతి (పేరు లేని ఫంక్షన్), ఇది పద్ధతులకు వాదనగా పంపబడుతుంది లేదా వేరియబుల్స్లో నిల్వ చేయబడుతుంది.
ఫంక్షనల్ ఇంటర్ఫేస్లు
ఫంక్షనల్ ఇంటర్ఫేస్ అవసరమైన చోట మాత్రమే లాంబ్డా వ్యక్తీకరణ ఉపయోగించబడుతుంది. ఫంక్షనల్ ఇంటర్ఫేస్ అనేది ఖచ్చితంగా ఒక నైరూప్య పద్ధతిని ప్రకటించే ఇంటర్ఫేస్. జావా ఈ ఇంటర్ఫేస్లను ఐచ్ఛిక @FunctionalInterface ఉల్లేఖనతో గుర్తు చేస్తుంది.
వినియోగదారు నిర్వచించిన ఫంక్షనల్ ఇంటర్ఫేస్కి ఉదాహరణ:
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}జావా 8కి ముందు, మీరు అనామక అంతర్గత తరగతిని నిర్వచించవలసి ఉంటుంది. లాంబ్డాస్తో, వాక్యనిర్మాణం ఇలా సరళీకృతం చేయబడింది:
MathOperation addition = (a, b) -> a + b;
int result = addition.operate(5, 3); // Returns 8లాంబ్డా వ్యక్తీకరణల నిర్మాణం
లాంబ్డా యొక్క ప్రాథమిక వాక్యనిర్మాణం:
(parameters) -> { body }
- పరామితులు లేకుండా:
() -> System.out.println("Hello") - ఒకే పరామితి:
x -> x * 2(కుండలీకరణాలను విస్మరించవచ్చు) - బహుళ పారామితులు:
(x, y) -> x + y - మల్టీ-లైన్ బాడీ: శరీరం బహుళ స్టేట్మెంట్లను కలిగి ఉంటే,
{}కలుపులు మరియు స్పష్టమైనreturnస్టేట్మెంట్ అవసరం.
MathOperation detailedAddition = (a, b) -> {
System.out.println("Adding...");
return a + b;
};జావాలో ప్రామాణిక ఫంక్షనల్ ఇంటర్ఫేస్లు
java.util.function ప్యాకేజీ అనేక అంతర్నిర్మిత ఫంక్షనల్ ఇంటర్ఫేస్లను అందిస్తుంది:
Predicate<T>:Tరకం ఆర్గ్యుమెంట్ని అంగీకరిస్తుంది మరియు బూలియన్ (test(T t)పద్ధతి)ని అందిస్తుంది.Consumer<T>:Tరకం ఆర్గ్యుమెంట్ని అంగీకరిస్తుంది మరియు ఫలితాన్ని అందించకుండా ఆపరేషన్ చేస్తుంది (accept(T t)పద్ధతి).Function<T, R>: ఒక ఆర్గ్యుమెంట్ను అంగీకరిస్తుందిTమరియు ఫలితాన్ని అందిస్తుందిR(apply(T t)పద్ధతి).Supplier<T>: ఏ ఆర్గ్యుమెంట్లను అంగీకరించదు మరియు రకంT(get()పద్ధతి) విలువను అందిస్తుంది.
మీరే ప్రయత్నించండి
రెండు పూర్ణాంకాలను జోడించే లాంబ్డా ఎక్స్ప్రెషన్ని ఉపయోగించి కాలిక్యులేటర్ ఇంటర్ఫేస్ను ఇన్స్టాంటియేట్ చేయడం ద్వారా కోడ్ను పూర్తి చేయండి. తర్వాత, 5 మరియు 3 దాటిన గణన పద్ధతిని అమలు చేయండి మరియు ఫలితాన్ని ముద్రించండి.
సూచనను చూపించు
`కాలిక్యులేటర్ యాడర్ = (a, b) -> a + b;` అని ప్రకటించి, ఆపై ప్రింట్ కాల్లో `adder.calculate(5, 3)`ని పిలవండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
స్ట్రింగ్ పొడవు 5 అక్షరాల కంటే ఎక్కువగా ఉందో లేదో తనిఖీ చేసే లాంబ్డా ఎక్స్ప్రెషన్ని ఉపయోగించి isLong అనే ప్రామాణిక ఫంక్షనల్ ఇంటర్ఫేస్ ప్రిడికేట్<String> యొక్క ఉదాహరణను సృష్టించండి. ఆపై 'హలో వరల్డ్' కోసం పరీక్ష ఫలితాన్ని ప్రింట్ చేయండి.
సూచనను చూపించు
`ప్రిడికేట్<String>` కోసం లాంబ్డా పరామితి `s`ని తీసుకుంటుంది మరియు `s.length() > 5`ని బూలియన్ కండిషన్గా అందిస్తుంది.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
స్ట్రింగ్స్ పేర్ల జాబితాను దానిపై సార్ట్() పద్ధతిని ప్రారంభించడం ద్వారా మరియు కంపారేటర్ని అమలు చేసే లాంబ్డా ఎక్స్ప్రెషన్ను పాస్ చేయడం ద్వారా అక్షరక్రమంగా క్రమబద్ధీకరించండి (రెండు స్ట్రింగ్లు s1, s2 తీసుకొని వాటిని compareTo ఉపయోగించి పోల్చడం).
సూచనను చూపించు
జాబితాను స్థానంలో క్రమబద్ధీకరించడానికి `names.sort((s1, s2) -> s1.compareTo(s2));` ఉపయోగించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది