我是靠谱客的博主 开心斑马,最近开发中收集的这篇文章主要介绍java 8 lambda表达式常用方法及使用场景,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文通过案例,介绍了java 1.8 lambda表达式常用的一些方法及使用场景
后续会继续扩展

先定义一个People类

public class People {
    
    private Integer id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 性别
     */
    private Integer sex;

    /**
     * 所属省份
     */
    private String province;

    /**
     * 存款
     */
    private Integer money;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getMoney() {
        return money;
    }

    public void setMoney(Integer money) {
        this.money = money;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", sex=" + sex +
                ", province='" + province + ''' +
                ", money=" + money +
                '}';
    }
}

有个People的list, 使用lambda表达式依次做以下操作

循环操作

   peopleArrayList.forEach(item -> {
        // doSomething
    });

筛选属性

场景: 将所有的人员id取出来
List<Integer> peopleIds = peopleArrayList.stream().map(people -> people.getId()).collect(Collectors.toList());

去重

场景: 将所有的人员id取出来并去重
List<Integer> peopleIds = peopleArrayList.stream().map(people -> people.getId()).distinct().collect(Collectors.toList());

过滤

场景: 过滤出性别为男或女的人员
List<People> peopleList = peopleArrayList.stream().filter(p -> p.getSex() == 0).collect(Collectors.toList());

排序

场景: 按id大小倒序排序(从小到大)
peopleArrayList.sort((p1, p2) -> p2.getId().compareTo(p1.getId()));

分组

场景1: 按性别分组 (单字段)
Map<Integer, List<People>> peopleMap = peopleArrayList.stream().collect(Collectors.groupingBy(People::getSex));
场景2: 按性别和省份分组 (多字段)
Map<String, List<People>> peopleMap = peopleArrayList.stream().collect(Collectors.groupingBy(people -> people.getSex() + "#" + people.getProvince()));

统计

场景: 统计所有人员的存款总和
int型
int sum = peopleArrayList.stream().mapToInt(People::getMoney).sum();
long型
long sum = peopleArrayList.stream().mapToLong(People::getMoney).sum();
double型
double sum = peopleArrayList.stream().mapToDouble(People::getMoney).sum();

最后

以上就是开心斑马为你收集整理的java 8 lambda表达式常用方法及使用场景的全部内容,希望文章能够帮你解决java 8 lambda表达式常用方法及使用场景所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部