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;
        }
    }
}
目录
相关文章
|
3天前
|
Java 开发者
Java中的Lambda表达式:简化你的代码之旅
【8月更文挑战第17天】 在编程的海洋中,简洁是航行的风帆。Lambda表达式,作为Java 8的一大亮点,为开发者提供了一种更为紧凑、易读的编码方式。本篇文章将带你领略Lambda表达式的魅力,从基础概念到实际应用,让你的代码像诗句一样流畅。
13 4
|
8天前
|
并行计算 Java 程序员
探索Java中的Lambda表达式
在Java 8中,引入了Lambda表达式,这一特性极大地简化了代码,提高了开发效率。本文将通过浅显易懂的语言和生动的比喻,带你一步步了解Lambda表达式的魅力所在,从基础语法到实际应用,让你轻松掌握这一强大的工具。
18 1
|
1天前
|
Java 程序员
"Java程序员必备秘籍:Lambda表达式如何让你的代码瘦身90%?揭秘简化编程的终极奥秘!"
【8月更文挑战第19天】Java持续进化,Lambda表达式自Java 8起赋予其新活力。它简化代码,使编程更愉悦。以前,简单功能需冗长代码,如列表排序要用匿名内部类实现`Comparator`。现在一行Lambda足矣。Lambda如`(参数) -&gt; {表达式}`,支持零或多参数。
|
4天前
|
Oracle Java 关系型数据库
Java10 Lambda 设计和实现问题之在双流 concat 的场景中,确保 s1 和 s2 流水线上的算子与 s3 流水线上的算子正确串联起来,如何实现
Java10 Lambda 设计和实现问题之在双流 concat 的场景中,确保 s1 和 s2 流水线上的算子与 s3 流水线上的算子正确串联起来,如何实现
|
4天前
|
Java API
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
|
4天前
|
Java API
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
|
5天前
|
Java
Java Lambda Stream
Java Lambda Stream
11 0
|
5天前
|
机器学习/深度学习 XML 安全
Java正则表达式基础
Java正则表达式基础
9 0
|
8天前
|
Java API 开发者
震撼!Java 8 中 Lambda 表达式与 Stream API 带来的编程革命超乎想象!
【8月更文挑战第12天】Java 8 引入了 Lambda 表达式和 Stream API,极大地提升了编程效率与代码可读性。Lambda 表达式简化了匿名函数的定义,如快速定义数学运算 `(a, b) -&gt; a + b`。Stream API 提供了一种声明式数据处理方式,能够流畅地完成过滤、映射等操作,减少循环结构的复杂性。两者结合,让 Java 代码更加简洁高效,易于理解和维护。
20 0
|
Java Unix 数据库管理
java定时框架:表达式设置
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知)   时间格式: ,   分别对应: 秒>分>小时>日>月>周>年,  举例: 1.
858 0