java lambda max_关于java中的Lambda如何使用

简述:

java 8 提供的 Lambda 表达式 ,利用流和 Lambda 表达式对List集合进行处理。在开发的过程中,最重要的就是数据处理,而在java8以前,我们对List集合的处理就停留在传统的 for , if 这样的逻辑上,在某些方面是对数据处理是很繁琐的。而 java 8 提供的特性Lambda 表达式就很好的解决了这一问题。让代码更加的简洁,效率更加的高。

缺点:

(1).若不用并行计算,很多时候计算速度没有比传统的 for 循环快。

(2).容易使用 debug 模式调试。

(3).在 lambda 语句中直接强制类型转换不方便。

(4).不可以在 foreach 中修改 foreach 外面的值。

Lambda基本操作:

遍历:

list.forEach(student1 -> System.out.println(student1.getWorke()));

基本语法 :

实体类 : : 属性 : 表示这个对象中的某个属性 。

例如 : Student :: getAge

.collect (Collectors . 转换的类型) : 表示最后的结果转换成什么类型。

例如 : .collect (Collectors . toList()) 表示最后的结果转换成 list 集合。

.collect (Collectors . toSet()) 表示最后的结果转换成 set 集合。

collect(Collectors.toMap(ppi003601 -> "键", Function.identity()));

Function.identity() : 表示当前对象,并且递增取当前对象。

stream() 操作:

排序 (sorted()):

升序

根据对象中的年龄来排序

List collect = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());

降序

根据对象中的年龄来降序

List collect1 = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

去重 : (distinct())

List distinctList = list.stream().distinct().collect(Collectors.toList());

过滤:(filter())

List collect2 = list.stream().filter(student1 -> student1.getAge() > 20).collect(Collectors.toList());

提取:(map())

解释 : 集合中提取出来单个对象中的某个属性。

Set nameSet = list.stream().map(Student::getName).collect(Collectors.toSet());

统计:

求和(sum())

int sum = list.stream().mapToInt(Student::getAge).sum();

平均值(average())

double asDouble = list.stream().mapToInt(Student::getAge).average().getAsDouble();

最大值 (max())

int max = list.stream().mapToInt(Student::getAge).max().getAsInt();

最小值 (min())

int min = list.stream().mapToInt(Student::getAge).min().getAsInt();

分组:(groupingBy())

单一分组:

Map> collect3 = list.stream().collect(Collectors.groupingBy(Student::getName));

多重分组:

Map>> collect4 = list.stream().collect(Collectors.groupingBy(Student::getName, Collectors.groupingBy(Student::getSex)));

集合转换 (list,set,map)

转换成 list (.toList())

List nameList = list.stream().map(Student::getName).collect(Collectors.toList());

转换成 set (.toSet())

Set nameSet = list.stream().map(Student::getName).collect(Collectors.toSet());

转换成 map (.toMap(k,v))

表示将这个集合转换成一个 key 为 name , value 为 Student 对象的Map 集合,前提要保证这个key唯一

Map studentMap = list.stream().collect(Collectors.toMap(s -> s.getName, Function.identity()));

当多个条件才能确定唯一的话,可以将这些条件拼接起来做为key

Map studentMap =

list.stream().collect(Collectors.toMap(s -> s.getName + s.getAge + s.getClassName,Function.identity()));noproblems​www.noproblems.cn

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java lambda函数是指在Java使用lambda式来定义匿名函数的一种功能。它允许我们以一种更简洁和灵活的方式编写代码。Lambda式可以被视为一个匿名函数,它没有名称,但具有参数列表、函数体和可能的返回类型。在Javalambda式主要用于函数式编程和使用函数式接口。通过使用lambda式,我们可以更方便地将函数作为参数传递给方法或以函数式方式处理集合数据。我们还可以使用lambda式来简化代码并提高代码的可读性。 Lambda式的语法形式为:(参数列表) -> {函数体}。其,参数列表指定了该匿名函数的参数,而函数体则定义了该匿名函数的具体实现。使用lambda式可以简化代码的编写,尤其是在使用函数式接口或需要传递函数作为参数的情况下。例如,我们可以使用lambda式来对一个列表进行排序,如上述代码所示。此外,在Javalambda式还可以与函数式接口一起使用,以便更方便地实现函数式编程。例如,我们可以使用lambda式来定义Supplier和Function接口的实例,以创建对象或进行数据转换。 Java还引入了StreamAPI,它提供了一种流畅的方式来处理集合数据。通过使用lambda式和StreamAPI,我们可以更简洁地实现对集合的操作,如筛选、映射和归约等。 总的来说,Java lambda函数是一种方便、灵活且简洁的编码方式,它可以用于函数式编程、函数作为参数传递和集合数据处理等场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java Lambda详解](https://blog.csdn.net/weixin_68320784/article/details/123883239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java Lambda式 、函数式接口 、方法引用和构造器调用 、 Stream](https://blog.csdn.net/qq_58765786/article/details/121108362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值