• Lambda表达式


    1.知道什么是内部类----然后匿名内部类
    2. 知道什么是函数式接口----只有函数式接口的匿名内部类才能写lambda
    3. 知道什么是方法的引用.
    4. stream
    从此对集合的操作无比丝滑.效率还高
    而且,真的是可读性会更高.而不是去看这个循环,那个循环

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

    1. //不使用lambda表达式
    2. List list = Arrays.asList("apple", "banana", "orange");
    3. for (String fruit:list) {
    4. System.out.println(fruit);
    5. }
    6. //使用lambda表达式
    7. list.forEach(System.out::println);
    8. list.forEach(s -> {
    9. System.out.println(s);
    10. });

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

    1. //不使用lambda表达式
    2. Collections.sort(list, new Comparator() {
    3. @Override
    4. public int compare(String o1, String o2) {
    5. return o1.compareTo(o2);
    6. }
    7. });
    8. //使用lambda表达式
    9. Collections.sort(list,(o1,o2)-> o1.compareTo(o2));

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

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

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

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

    5、使用lambda表达式进行归

    进行累加

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

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

    1. //不使用lambda表达式
    2. List list = Arrays.asList("apple","orange","banana");
    3. HashMap> groups = new HashMap<>();
    4. for (String s:list) {
    5. int length = s.length();
    6. if (!groups.containsKey(length)){
    7. groups.put(length,new ArrayList<>());
    8. }
    9. groups.get(length).add(s);
    10. }
    11. //使用lambda表达式
    12. final Map> collect = list.stream().collect(Collectors.groupingBy(String::length));

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

    1. //不使用lambda表达式
    2. final MyInterface myInterface = new MyInterface() {
    3. @Override
    4. public void doSomething(String s) {
    5. System.out.println(s);
    6. }
    7. };
    8. myInterface.doSomething("Hello world");
    9. }
    10. interface MyInterface {
    11. public void doSomething(String s);
    12. }
    13. //使用lamcda表达式
    14. MyInterface myInterface = s -> System.out.println(s);
    15. myInterface.doSomething("Hello world");

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

    1. //不使用lambda表达式
    2. final Thread thread = new Thread(new Runnable() {
    3. @Override
    4. public void run() {
    5. System.out.println("hello world");
    6. }
    7. });
    8. thread.start();
    9. //使用lambda表达式
    10. final Thread thread = new Thread(() -> System.out.println("hello world"));
    11. thread.start();

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

    1. //不使用lambda表达式
    2. String str = "hello world";
    3. if (str!=null){
    4. System.out.println(str.toUpperCase());
    5. }
    6. //使用lambda表达式
    7. Optional.ofNullable(str).map(String::toLowerCase).ifPresent(System.out::println);

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

    1. //使用lambda表达式
    2. List list = Arrays.asList("apple","orange","banana");
    3. ArrayList list2 = new ArrayList<>();
    4. for (String s : list) {
    5. if (s.startsWith("a")){
    6. list2.add(s.toLowerCase());
    7. }
    8. }
    9. Collections.sort(list2);
    10. //不使用lambda表达式
    11. list.stream().filter(s -> s.startsWith("a")).map(String::toLowerCase).sorted().collect(Collectors.toList());

  • 相关阅读:
    DIFM网络详解及复现
    Nginx学习笔记
    棱镜七彩参编!开源领域4项团体标准正式发布
    除了走路,40-60岁的人,还可以进行哪些运动?3种运动可供参考
    PIR人体感应AC系列感应器投光灯人体感应开关等应用定制方案
    【Linux通信】Linux中IPC(跨进程通信)、RPC(远程过程调用)、LPC(本地过程调用)的区别
    4.cmake-更好的hello-world
    【Qt】开发环境搭建
    2022年全球市场干湿两用电动剃须刀总体规模、主要生产商、主要地区、产品和应用细分研究报告
    Java注解与原理分析
  • 原文地址:https://blog.csdn.net/m0_61843855/article/details/134449616