java常用的lambda表达式总结

news/2024/7/7 18:40:33

一、概述

        lambda表达式是JDK8中的一个新特性,对某些匿名内部类进行简化,是函数式编程;

二、基本格式

        (参数列表)->{方法体代码}

三、Stream流

        是jdk8中的新特性,将数据以流的形式进行操作

三、常用方法解析

3.1、准备工作

@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode //用于后期的去重使用
@Data
public class People {
    private int id;
    private String name;
    private int age;
    private String home;
    private List<Friend> friendList;
}
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode //用于后期的去重使用
@Data
public class Friend {
    private int id;
    private String name;
    private int age;
    private String home;
    private String category;//分类
}
 void contextLoads() {
        People people1=new People(1,"曹操",33,"魏国",null);
        People people2=new People(2,"孙权",15,"吴国",null);
        People people3=new People(3,"张飞",14,"蜀国",null);
        People people4=new People(3,"张飞",14,"蜀国",null);
        List<Friend>list1=new ArrayList<>();
        List<Friend>list2=new ArrayList<>();
        List<Friend>list3=new ArrayList<>();
        list1.add(new Friend(1,"刘备",88,"河北,石家庄","好朋友"));
        list1.add(new Friend(2,"赵云",99,"湖北,武汉","新朋友"));

        list2.add(new Friend(3,"周瑜",85,"辽宁,大连","老朋友"));
        list2.add(new Friend(3,"周瑜",85,"辽宁,大连","老朋友"));
        list2.add(new Friend(4,"诸葛亮",56,"内蒙古,包头","大朋友"));

        list3.add(new Friend(5,"郭嘉",56,"甘肃,兰州","骄傲的朋友"));
        list3.add(new Friend(6,"吕布",100,"陕西,西安","厉害的朋友"));
        list3.add(new Friend(7,"吕布",100,"陕西,西安","厉害的朋友"));

        people1.setFriendList(list1);
        people2.setFriendList(list2);
        people3.setFriendList(list3);
        people4.setFriendList(list3);

        List<People>peopleList=new ArrayList<>(Arrays.asList(people1,people2,people3,people4));
    }

 3.2、常用方法

stream()
distinct()
filter()

forEach()

//打印people年龄小于18的人的名字,且去重

peopleList.stream().distinct()
        .filter(new Predicate<People>() {
            @Override
            public boolean test(People people) {
                return people.getAge()<18;
            }
        }).forEach(new Consumer<People>() {
            @Override
            public void accept(People people) {
                System.out.println(people.getName());
            }
        });

-------------------------------Alt+Enter转为Lambda表达式-----------------------------
peopleList.stream()
        .distinct()
        .filter(people -> people.getAge()<18)
        .forEach(people -> System.out.println(people.getName()));

        

                        


http://lihuaxi.xjx100.cn/news/1355410.html

相关文章

关于uniapp分享功能实现

创建一个混入 export default {data() {return {//设置默认的分享参数//如果页面不设置share&#xff0c;就触发这个默认的分享share: {title: 商会宝,//自定义标题path: /pages/home/home?appId${uni.getStorageSync("appid")}, //默认跳转首页imageUrl: , //可…

【阿Q送书第二期】《高并发架构实战:从需求分析到系统设计》

#挑战Open AI&#xff01;马斯克宣布成立xAI&#xff0c;你怎么看&#xff1f;# 文章目录 你想成为架构师嘛&#xff1f;架构经验高并发高并发架构实战特点值得推荐赠书规则 你想成为架构师嘛&#xff1f; 很多软件工程师的职业规划是成为架构师&#xff0c;但是要成为架构师很…

企业数字化转型需要解决哪些问题?

企业的数字化转型及利用技术和数字解决方案来改进业务流程、增强客户体验并推动整体增长。尽管每个企业的数字化转型之旅都是独特的&#xff0c;但仍需要解决几个常见问题以确保转型成功。其中一些问题包括&#xff1a; 1.抵制变革&#xff1a;数字化转型中最大的挑战之一是员…

5. 缓存模块

缓存概述 对于缓存功能&#xff0c;相信大家都十分熟悉了。一旦我们发现系统的性能存在瓶颈需要优化时&#xff0c;可能第一时间想到的方式就是加缓存。缓存本质上是一种空间换时间的技术&#xff0c;它将计算结果保存在距离用户更近、或访问效率更高的存储介质中&#xff0c;…

【python】正则表达式秒杀:牛客网-HJ17 坐标移动

描述 开发一个坐标计算工具&#xff0c; A表示向左移动&#xff0c;D表示向右移动&#xff0c;W表示向上移动&#xff0c;S表示向下移动。从&#xff08;0,0&#xff09;点开始移动&#xff0c;从输入字符串里面读取一些坐标&#xff0c;并将最终输入结果输出到输出文件里面。…

Vue3结果(Result)

可自定义设置以下属性&#xff1a; 结果的状态&#xff0c;决定图标和颜色&#xff08;status&#xff09;&#xff0c;类型&#xff1a;‘success’|‘error’|‘info’|‘warn’|‘404’|‘403’|‘500’&#xff0c;默认&#xff1a;‘info’标题文字&#xff08;title&…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud设置运维窗口和设置时区

目录 概述 查看运维窗口 编辑运维窗口 相关文档 查看当前时区 编辑时区 相关文档 Zilliz Cloud 允许用户为集群设置运维窗口,以减少运维对工作负载的影响,增加可预测性。 概述 目前,运维窗口设置为全局设置,应用于 Zilliz Cloud 上的所有集群。 为避免在业务高峰期…