Lambda表达式

1.知道什么是内部类----然后匿名内部类

  1. 知道什么是函数式接口----只有函数式接口的匿名内部类才能写lambda

  2. 知道什么是方法的引用.

  3. stream

从此对集合的操作无比丝滑.效率还高

而且,真的是可读性会更高.而不是去看这个循环,那个循环

1、使用lambda表达式进行集合遍历

java 复制代码
//不使用lambda表达式
List<String> list = Arrays.asList("apple", "banana", "orange");
for (String fruit:list) {
    System.out.println(fruit);
}
//使用lambda表达式
list.forEach(System.out::println);
list.forEach(s -> {
            System.out.println(s);
        });

2、使用lambda表达式进行排序

java 复制代码
//不使用lambda表达式
Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
//使用lambda表达式
Collections.sort(list,(o1,o2)-> o1.compareTo(o2));

3、使用lambda表达式进行过滤

java 复制代码
//使用lambda表达式,取出所有以a开头的元素,并返回一个list集合
list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());

4、使用lambda表达式进行映射

java 复制代码
//使用lambda表达式,获得list集合中所有元素的长度,map,类型管理
List<Integer> list2 = list.stream().map(s -> s.length()).collect(Collectors.toList());

5、使用lambda表达式进行归约

进行累加

java 复制代码
//使用lambda表达式
final List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
System.out.println(list.stream().reduce(0, (a, b) -> a + b));

6、使用lambda表达式进行分组

java 复制代码
 //不使用lambda表达式  
 List<String> list = Arrays.asList("apple","orange","banana");
        HashMap<Integer,List<String>> groups = new HashMap<>();
        for (String s:list) {
            int length = s.length();
            if (!groups.containsKey(length)){
                groups.put(length,new ArrayList<>());
            }
            groups.get(length).add(s);
        }
 //使用lambda表达式 
final Map<Integer, List<String>> collect = list.stream().collect(Collectors.groupingBy(String::length));

7、使用lambda表达式关于函数式接口的实现

java 复制代码
//不使用lambda表达式 
final MyInterface myInterface = new MyInterface() {
            @Override
            public void doSomething(String s) {
                System.out.println(s);
            }
        };
        myInterface.doSomething("Hello world");
    }
 
    interface MyInterface {
        public void doSomething(String s);
    }
//使用lamcda表达式
 MyInterface myInterface = s -> System.out.println(s);
 myInterface.doSomething("Hello world");

8、使用lambda表达式进行线程的创建

java 复制代码
//不使用lambda表达式 
 final Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello world");
            }
        });
 thread.start();
//使用lambda表达式
final Thread thread = new Thread(() -> System.out.println("hello world"));
thread.start();

9、使用lambda表达式进行Optional的创建

java 复制代码
//不使用lambda表达式
 String str = "hello world";
 if (str!=null){
      System.out.println(str.toUpperCase());
   }
//使用lambda表达式
Optional.ofNullable(str).map(String::toLowerCase).ifPresent(System.out::println);

10、使用lambda表达式进行流水线的操作

java 复制代码
//使用lambda表达式 
  List<String> list = Arrays.asList("apple","orange","banana");
          ArrayList<String> list2 = new ArrayList<>();
        for (String s : list) {
            if (s.startsWith("a")){
                list2.add(s.toLowerCase());
            }
        }
Collections.sort(list2);
//不使用lambda表达式
list.stream().filter(s -> s.startsWith("a")).map(String::toLowerCase).sorted().collect(Collectors.toList());
相关推荐
2601_9623649714 分钟前
企业 PC 安全升级,Windows Hello 商用生物识别模组介绍
windows·安全
2501_916007472 小时前
Windows OpenSSL 生成 iOS 证书,制作 p12 与描述文件,KXBuild 签名实操
windows·vscode·ios·objective-c·个人开发·swift·敏捷流程
椒颜皮皮虾྅4 小时前
模型部署不再卡在环境上:DeploySharp 四大推理引擎与 Windows/Linux 离线交付实战
linux·运维·开发语言·人工智能·windows·计算机视觉·cuda
昂好的day5 小时前
C# 同步异步与多线程:Thread / Task / 线程池一次讲透(上篇)
开发语言·windows·c#
垆边人似月.5 小时前
Ubuntu 配置 Samba 共享文件夹并映射到 Windows 完整指南
linux·windows·ubuntu
BIBI204916 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
chushiyunen17 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
燃烧的枫18 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
猪八宅百炼成仙19 小时前
让 AI 帮你清理电脑而不翻车:一个 Windows 体检调优 Skill 的工程化设计
人工智能·windows
鱼宵20 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21