当前位置:   article > 正文

花几千上万学习Java,真没必要!(四十六)

花几千上万学习Java,真没必要!(四十六)

Lambda表达式:

 

 

测试代码1:

  1. package test.lambda;
  2. public class LambdaDemo {
  3. // 实现Runnable接口的类
  4. static class MyThread implements Runnable {
  5. @Override
  6. public void run() {
  7. System.out.println("线程运行中:通过实现Runnable接口");
  8. }
  9. }
  10. public static void main(String[] args) {
  11. // 通过实现Runnable接口的类启动线程
  12. Thread thread1 = new Thread(new MyThread());
  13. thread1.start();
  14. // 使用匿名内部类启动线程
  15. Thread thread2 = new Thread(new Runnable() {
  16. @Override
  17. public void run() {
  18. System.out.println("线程运行中:通过匿名内部类");
  19. }
  20. });
  21. thread2.start();
  22. // 使用Lambda表达式启动线程
  23. Thread thread3 = new Thread(() -> System.out.println("线程运行中:通过Lambda表达式"));
  24. thread3.start();
  25. // 由于线程调度的不确定性,三个线程的输出顺序变化。
  26. }
  27. }

运行结果如下:

 

测试代码2:

  1. package test.lambda;
  2. //定义一个函数式接口,包含一个无参无返回值的抽象方法。
  3. @FunctionalInterface
  4. interface Action {
  5. void perform();
  6. }
  7. class TaskExecutor {
  8. // 定义一个方法,该方法接受一个Action类型的参数
  9. void execute(Action action) {
  10. // 调用Action接口的perform方法
  11. action.perform();
  12. }
  13. }
  14. public class LambdaTest {
  15. public static void main(String[] args) {
  16. // 创建TaskExecutor的实例
  17. TaskExecutor executor = new TaskExecutor();
  18. // 使用匿名内部类传递Action接口的实例
  19. executor.execute(new Action() {
  20. @Override
  21. public void perform() {
  22. System.out.println("通过匿名内部类执行一个无参无返回值的操作");
  23. }
  24. });
  25. //使用Lambda表达式作为参数传递给execute方法。
  26. //这个Lambda表达式实现了Action接口的perform方法,并在其中打印一条消息。
  27. executor.execute(() -> {
  28. System.out.println("通过Lambda表达式执行一个无参无返回值的操作");
  29. });
  30. }
  31. }

运行结果如下:

 

测试代码3:

  1. package test.lambda;
  2. //定义一个函数式接口,包含一个有参无返回值的抽象方法。
  3. @FunctionalInterface
  4. interface Greeter {
  5. void greet(String name);
  6. }
  7. class GreetingService {
  8. // 该方法接收一个Greeter类型的参数并调用其greet方法
  9. void sayHello(Greeter greeter) {
  10. greeter.greet("World");
  11. }
  12. }
  13. public class LambdaWithParameters {
  14. public static void main(String[] args) {
  15. // 创建GreetingService的实例
  16. GreetingService service = new GreetingService();
  17. //使用匿名内部类
  18. service.sayHello(new Greeter() {
  19. @Override
  20. public void greet(String name) {
  21. System.out.println("Hello, " + name + "!!!!!!!!!!!");
  22. }});
  23. // 使用Lambda表达式传递Greeter接口的实例
  24. service.sayHello((String name) -> {
  25. System.out.println("Hello, " + name + "**********");
  26. });
  27. // 更简洁的Lambda表达式(在参数类型可以推断出来时,可以省略参数类型)
  28. service.sayHello(name -> System.out.println("Hello, " + name + "..........."));
  29. }
  30. }

运行结果如下:

 

测试代码4:

  1. package test.lambda;
  2. //定义一个函数式接口,接收一个字符串参数并返回一个布尔值。
  3. @FunctionalInterface
  4. interface StringChecker {
  5. boolean check(String str);
  6. }
  7. class StringProcessor {
  8. // 该方法接收一个StringChecker和一个字符串,然后调用StringChecker的check方法。
  9. void processString(StringChecker checker, String input) {
  10. if (checker.check(input)) {
  11. System.out.println(input + " meets the criteria.");
  12. } else {
  13. System.out.println(input + " does not meet the criteria.");
  14. }
  15. }
  16. }
  17. public class LambdaStringExample {
  18. public static void main(String[] args) {
  19. // 创建StringProcessor的实例
  20. StringProcessor processor = new StringProcessor();
  21. //使用匿名内部类
  22. processor.processString(new StringChecker() {
  23. @Override
  24. public boolean check(String str) {
  25. System.out.print("匿名内部类.............."+"\n");
  26. return false;
  27. }
  28. }, null);
  29. // 使用Lambda表达式传递StringChecker接口的实例
  30. // 检查字符串长度是否大于5
  31. processor.processString(str -> str.length() > 5, "Hello");
  32. processor.processString(str -> str.length() > 5, "Hello, World!");
  33. // 使用Lambda表达式传递StringChecker接口的实例
  34. // 检查字符串是否包含特定子串
  35. processor.processString(str -> str.contains("Java"), "This is a Java program.");
  36. processor.processString(str -> str.contains("Python"), "This is a Java program.");
  37. }
  38. }

运行结果如下:

 

.................................................................................................................................................... 

 

测试代码:

  1. package test.lambda;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.stream.Collectors;
  5. //定义函数式接口
  6. @FunctionalInterface
  7. interface Greeting {
  8. void greet(String name);
  9. }
  10. @FunctionalInterface
  11. interface StringSupplier {
  12. String get();
  13. }
  14. @FunctionalInterface
  15. interface Sum {
  16. int sum(int a, int b);
  17. }
  18. public class LambdaOmitMode {
  19. public static void main(String[] args) {
  20. // 使用Lambda表达式,省略参数类型,实现Greeting接口
  21. Greeting greeting = name -> System.out.println("Hello, " + name + "!");
  22. greeting.greet("Lambda");
  23. // 使用Lambda表达式,省略大括号、分号和return关键字,实现StringSupplier接口
  24. StringSupplier supplier = () -> "Hello from Lambda Supplier!";
  25. System.out.println(supplier.get());
  26. // 使用Lambda表达式,省略参数类型但不省略小括号(因为有两个参数),实现Sum接口
  27. Sum sum = (a, b) -> a + b;
  28. System.out.println("Sum: " + sum.sum(5, 3));
  29. // 过滤出长度大于3的字符串
  30. List<String> strings = Arrays.asList("Java", "Python", "C++", "Scala");
  31. List<String> filtered = strings.stream().filter(s -> s.length() > 3)
  32. .collect(Collectors.toList());
  33. // 打印过滤后的结果
  34. System.out.println("Filtered Strings: " + filtered);
  35. }
  36. }

运行结果如下:

 

....................................................................................................................................................

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/1008713
推荐阅读
相关标签
  

闽ICP备14008679号