ল্যাম্বডা এক্সপ্রেশন (Lambda Expression) কী?
ল্যাম্বডা এক্সপ্রেশন হলো একটি ছোট কোড ব্লক যা প্যারামিটার নেয় এবং একটি ভ্যালু রিটার্ন করে। এটি অ্যানোনিমাস ফাংশন (anonymous function) এর 일종। জাভা ৮ থেকে প্রবর্তিত, এটি ফাংশনাল প্রোগ্রামিং শৈলী সক্ষম করে।
সিনট্যাক্স: (parameters) -> { body }
ইনপুট ও আউটপুট উদাহরণ
ইনপুট:
("Apple", "Orange", "Grapes")
আউটপুট:
elppA, egnarO, separG
প্রতিটি স্ট্রিং রিভার্স হয়েছে
অ্যালগরিদম
- প্রোগ্রাম শুরু করুন
- ArrayList
ডিক্লেয়ার করুন এবং ডেটা যোগ করুন - forEach() মেথডে ল্যাম্বডা এক্সপ্রেশন পাস করুন
- ল্যাম্বডা ভিতরে প্রতিটি স্ট্রিং রিভার্স করুন
- ফলাফল প্রিন্ট করুন
- প্রোগ্রাম শেষ করুন
উদাহরণ ১: ফলের লিস্ট রিভার্স
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
ArrayList fruits = new ArrayList<>(Arrays.asList("Apple", "Orange", "Grapes"));
System.out.println("The ArrayList is defined as : " + fruits);
System.out.print("The Reversed ArrayList is: ");
fruits.forEach((e) -> {
String result = "";
for (int i = e.length() - 1; i >= 0; i--) {
result += e.charAt(i);
}
System.out.print(result + ", ");
});
}
}
উদাহরণ ২: গেমের লিস্ট রিভার্স
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
ArrayList games = new ArrayList<>(Arrays.asList("Football", "Cricket", "Baseball"));
System.out.println("The ArrayList is defined as : " + games);
System.out.print("The Reversed ArrayList is: ");
games.forEach((e) -> {
String result = "";
for (int i = e.length() - 1; i >= 0; i--) {
result += e.charAt(i);
}
System.out.print(result + ", ");
});
}
}
ল্যাম্বডা এক্সপ্রেশন ব্যাখ্যা
// ফুল সিনট্যাক্স
(String e) -> {
String result = "";
for (int i = e.length() - 1; i >= 0; i--) {
result += e.charAt(i);
}
System.out.print(result + ", ");
}
// সংক্ষিপ্ত সিনট্যাক্স (একটি স্টেটমেন্ট, নো ব্রেস, নো রিটার্ন)
e -> System.out.print(new StringBuilder(e).reverse() + ", ")
StringBuilder ব্যবহার করে আরও দক্ষ রিভার্স
fruits.forEach(e -> System.out.print(new StringBuilder(e).reverse() + ", "));
ফাংশনাল ইন্টারফেস এবং ল্যাম্বডা
ল্যাম্বডা শুধু ফাংশনাল ইন্টারফেস (একটি অ্যাবস্ট্রাক্ট মেথড 가진 ইন্টারফেস) এর সাথে কাজ করে:
| ইন্টারফেস | অ্যাবস্ট্রাক্ট মেথড | ল্যাম্বডা উদাহরণ |
|---|---|---|
| Predicate<T> | boolean test(T t) | x -> x > 0 |
| Function<T,R> | R apply(T t) | x -> x * 2 |
| Consumer<T> | void accept(T t) | x -> System.out.println(x) |
| Supplier<T> | T get() | () -> "Hello" |
| BinaryOperator<T> | T apply(T t1, T t2) | (a, b) -> a + b |
| ল্যাম্বডা | মেথড রেফারেন্স | টাইপ |
|---|---|---|
| x -> System.out.println(x) | System.out::println | স্ট্যাটিক মেথড |
| str -> str.length() | String::length | ইন্সট্যান্স মেথড |
| (a, b) -> a.compareTo(b) | String::compareTo | আবজেক্টের ইন্সট্যান্স মেথড |
| () -> new ArrayList() | ArrayList::new | কনস্ট্রাক্টর |