JAVA8 Lambda表达式基础使用

简介: JAVA8 Lambda表达式基础使用
/**
 * JAVA8 Lambda表达式基础使用
 * GitHub地址:https://github.com/hack-feng/algorithm
 * CSDN地址:https://blog.csdn.net/qq_34988304/article/details/100920460
 * 联系作者:1150640979@qq.com
 */
public class Lambda {
    @SuppressWarnings("OptionalGetWithoutIsPresent")
    public static void main(String[] args) throws InterruptedException {
        System.out.println("-----------------------1、Lambda的多线程写法--------------------------");
        // 普通
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("非Lambda的多线程写法");
            }
        }).start();
        // Lambda
        new Thread(() -> System.out.println("Lambda的多线程写法")).start();
        Thread.sleep(100);
        System.out.println("-----------------------2、Lambda的for循环写法--------------------------");
        List<String> forTestList = new ArrayList<>();
        forTestList.add("a");
        forTestList.add("b");
        forTestList.add("c");
        for (int i = 0; i < forTestList.size(); i++) {
            System.out.println("普通for循环" + forTestList.get(i));
        }
        for (String flag : forTestList) {
            System.out.println("forEach循环" + flag);
        }
        forTestList.forEach(list -> System.out.println("Lambda的写法" + list));
        System.out.println("-----------------------3、Lambda集合常用的操作--------------------------");
        System.out.println("初始化数据:");
        List<User> userList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User(i, "姓名"+ i,  new Random().nextInt(5));
            System.out.println(user.toString());
            userList.add(user);
        }
        System.out.println("根据age分组--------------------------------------------------------");
        Map<Integer ,List<User>> groupMap = userList.stream().collect(Collectors.groupingBy(User::getAge));
        for(Map.Entry map : groupMap.entrySet()){
            System.out.println(map.getKey() + "    " + map.getValue());
        }
        System.out.println("根据age过滤--------------------------------------------------------");
        List<User> filerList = userList.stream().filter(list -> list.getAge() == 3).collect(Collectors.toList());
        filerList.forEach(list -> System.out.println("age为3的数据有:" + list.toString()));
        System.out.println("根据age, id进行倒序排序----------------------------------------------------");
        userList.sort(Comparator.comparing(User::getAge).thenComparing(User::getId).reversed());
        userList.forEach(list -> System.out.println(list.toString()));
        System.out.println("list转为map---------------------------------------------------------------");
        Map<Integer, User> map = userList.stream().collect(Collectors.toMap(User :: getId, list -> list));
        map.forEach((k, v) -> System.out.println("id:" + k + "            value:" + v.toString()));
        System.out.println("打印map中value的值age为3的id-----------------------------------------------");
        map.forEach((k, v) -> {
            if(v.getAge() == 3){
                System.out.println("age的值为3的id是:" + k);
            }
        });
        System.out.println("取数据的最大值和最小值-------------------------------------------------------");
        Integer maxId = userList.stream().map(User::getId).max(Integer::compareTo).get();
        System.out.println("最大id值为:" + maxId);
        Integer minId = userList.stream().map(User::getId).min(Integer::compareTo).get();
        System.out.println("最小id值为:" + minId);
    }
    // 定义User类,用作测试使用
    static class User{
        private Integer id;
        private String name;
        private Integer age;
        User(Integer id, String name, Integer age){
            this.id = id;
            this.name = name;
            this.age = age;
        }
        Integer getId() {
            return id;
        }
        Integer getAge() {
            return age;
        }
        public String toString(){
            return "id="+this.id + ",name="+this.name+",age="+this.age;
        }
    }
}
目录
相关文章
|
4天前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
6天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
6天前
|
JSON 自然语言处理 Java
这款轻量级 Java 表达式引擎,真不错!
AviatorScript 是一个高性能、轻量级的脚本语言,基于 JVM(包括 Android 平台)。它支持数字、字符串、正则表达式、布尔值等基本类型,以及所有 Java 运算符。主要特性包括函数式编程、大整数和高精度运算、完整的脚本语法、丰富的内置函数和自定义函数支持。适用于规则判断、公式计算、动态脚本控制等场景。
|
11天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
19天前
|
自然语言处理 安全 Java
Aviator Java 表达式引擎
AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。
38 10
|
17天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
21天前
|
Java API
[Java]Lambda表达式
本文主要介绍了Java中的Lambda表达式,包括其优化匿名内部类的方式、使用规范、内置函数式接口及方法引用等内容。文章详细解析了Lambda的基础语法、参数列表、方法体的简化规则,以及如何利用Lambda优化代码。此外,还探讨了Lambda的作用域和引用规则,强调了对局部变量、成员变量和常量的访问限制,旨在帮助读者全面理解和掌握Lambda表达式的应用。
13 0
[Java]Lambda表达式
|
30天前
|
Java 程序员 API
Java中的Lambda表达式:简化代码的秘密武器
【10月更文挑战第11天】 在Java编程中,Lambda表达式是一种简洁而强大的工具,它允许我们将函数作为参数传递给其他方法。本文将介绍Lambda表达式的基本概念、使用方法以及在实际项目中的应用案例,帮助你更好地理解和利用这一特性来简化代码。
22 8
|
24天前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
21 1