Lambdas aur Streams
Ek lambda expression, jo params -> expression se likha jaata hai, ek functional interface — ek interface jiska exactly ek abstract method ho — ko inline implement karne ka ek compact tareeqa hai, bina ek separate named class likhe. Neeche Greeter ka ek method hai, greet(), isliye ek lambda use directly implement kar sakta hai.
public class Main {
interface Greeter {
String greet(String name);
}
public static void main(String[] args) {
Greeter greeter = name -> "Hello, " + name + "!";
System.out.println(greeter.greet("Java"));
}
}Hello, Java!
Stream API
Ek stream aapko ek collection par filter aur map jaisi operations chain karne deta hai, aakhir mein collect jaisi terminal operation se ek result produce karte hue. numbers.stream().filter(...).map(...).collect(...) almost khud transformation ki ek description ki tarah parhta hai — even numbers rakho, unhe double karo, result ko ek list mein collect karo.
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> doubled = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * 2)
.collect(Collectors.toList());
System.out.println(doubled);
}
}[4, 8]
Aage: static aur final — class-level members, aur kisi cheez ko unchangeable mark karna.
Practice exercise
Ek List<Integer> numbers diya gaya hai jisme 1, 2, 3, 4 hain, ek stream istemal kar ke ek naya list banayein jisme har number ka square ho, phir use print karein.