Lambda常用方法

记录学习Lambda表达式常用方法,后续接着更新!!!

Lambda常用方法

    • forEach(循环)
    • filter(过滤)
    • map(转换)
    • peek(*)
    • reduce(加减乘除)
    • sorted(排序)
    • limit(保留前n)
    • skip(抛弃前n)
    • distinct(去重)
    • collect(导出结果)
    • count(统计数量)
    • max(最大值)
    • min(最小值)

forEach(循环)

@Test
public void forEach() {/*** forEach* 对stream流中的元素逐个遍历*/List<String> userNameList = Arrays.asList("海绵宝宝", "派大星", "章鱼哥");userNameList.forEach(System.out::println);HashMap<String, String> hashMap = new HashMap<>();hashMap.put("姓名", "蟹老板");hashMap.put("职位", "蟹堡王老板");hashMap.put("爱好", "money");hashMap.forEach((key, value) -> System.out.println(key + ":" + value));
}

filter(过滤)

@Test
public void filter() {/*** filter* filter会按照指定的条件匹配出符合要求的元素,并返回一个新的stream流*/List<String> filterList = Arrays.asList("炎龙铠甲", "地虎铠甲", "雪獒铠甲", "黑犀铠甲", "风鹰铠甲", "封魔斩", "裂地劈", "震雷削", "狂瀑扎", "穿风刺");List<String> listFilter = filterList.stream().filter(name -> name.contains("铠甲")).collect(Collectors.toList());listFilter.forEach(System.out::println);
}

map(转换)

@Test
public void map() {/*** map* map方法可以实现元素转换,比如一个元素所有字母转化为大写,又或者 把获取一个元素对象的某个属性*/// 转化为大写List<String> userNameMapList = Arrays.asList("di jia", "sai luo");List<String> upperCaselist = userNameMapList.stream().map(String::toUpperCase).collect(Collectors.toList());upperCaselist.forEach(System.out::println);// 获取一个元素对象的某个属性List<User> userList = new ArrayList<>();userList.add(new User().setId(1).setAge("19").setName("张三"));userList.add(new User().setId(2).setAge("18").setName("李四"));userList.add(new User().setId(3).setAge("20").setName("王五"));List<String> listInUserToString = userList.stream().map(User::getName).collect(Collectors.toList());listInUserToString.forEach(System.out::println);
}

peek(*)

@Test
public void peek() { // 一般peek用于打印,map用于转换/*** peek* peek会对流中的元素逐个遍历处理,它与map的区别在于:map一般用于对象的转换,peek用于对象的消费,即不改变元素本身的类型。*/List<String> userNameMapList = Arrays.asList("di jia", "sai luo");System.out.println("原始集合:" + userNameMapList);List<String> upperCaselist = userNameMapList.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println("原始集合经历map后:" + userNameMapList);upperCaselist.forEach(a -> System.out.println("map后:" + a));List<String> userNameMapList2 = Arrays.asList("di jia", "sai luo");System.out.println("原始集合2:" + userNameMapList2);List<String> upperCaselist2 = userNameMapList2.stream().peek(String::toUpperCase).collect(Collectors.toList());System.out.println("原始集合经历peek后:" + userNameMapList2);upperCaselist2.forEach(a -> System.out.println("peek后:" + a));List<String> userNameMapList3 = Arrays.asList("di jia", "sai luo");List<String> upperCaselist3 = userNameMapList3.stream().peek(name -> System.out.println("peek打印:" + name)).map(name -> name.toUpperCase()).collect(Collectors.toList());System.out.println("原始集合3:" + userNameMapList3);upperCaselist3.forEach(a -> System.out.println("peek + map 后:" + a));
}

reduce(加减乘除)

@Test
public void reduce() {/*** reduce* reduce()方法可以执行一些二元操作,例如求和、求积、求最大值等等*/List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);int sum = numbers.stream().reduce(0, Integer::sum);int sum2 = numbers.stream().reduce(0, (a, b) -> a + b);System.out.println(sum);
}

sorted(排序)

@Test
public void sorted() {/*** sorted* sorted()方法可以对Stream中的元素进行排序,如果要倒序可以加上 reversed()*/List<Integer> numbers = Arrays.asList(1, 3, 4, 5, 2, 0);numbers = numbers.stream().sorted(Comparator.comparing((Integer number) -> number).reversed()).collect(Collectors.toList());System.out.println(numbers);
}

limit(保留前n)

@Test
public void limit() {/*** limit* 就相当于sql中的limit,可以指定保留前N的元素(可以使用 limit + skip 做分页处理)*/List<String> dbList = Arrays.asList("Oracle", "MySQL", "PostgreSQL", "SQL Server", "Redis", "MongoDB", "Elasticsearch");List<String> limitList = dbList.stream().limit(3).collect(Collectors.toList());limitList.forEach(System.out::println);
}

skip(抛弃前n)

@Test
public void skip() {/*** skip* 作用与limit相反,会抛弃前N的元素(可以使用 limit + skip 做分页处理)*/List<String> dbList = Arrays.asList("Oracle", "MySQL", "PostgreSQL", "SQL Server", "Redis", "MongoDB", "Elasticsearch");List<String> limitList = dbList.stream().skip(3).collect(Collectors.toList());limitList.forEach(System.out::println);
}

distinct(去重)

@Test
public void distinct() {/*** distinct* 用于对流中的元素去重*/List<String> list = Arrays.asList("金钟罩", "铁布衫", "寒冰掌", "天马流星拳", "天马流星拳");List<String> limitList = list.stream().distinct().collect(Collectors.toList());limitList.forEach(System.out::println);
}

collect(导出结果)

@Test
public void collect() {/*** collect* 将流转换为指定的类型,比如List转换为List、Set、Map*/List<User> userList = new ArrayList<>();userList.add(new User().setId(1).setAge("19").setName("上官婉儿"));userList.add(new User().setId(2).setAge("18").setName("老夫子"));userList.add(new User().setId(3).setAge("20").setName("虞姬"));userList.forEach(user -> System.out.println(user.toString()));// List<User> 转 List<String>List<String> listInUserToString = userList.stream().map(User::getName).collect(Collectors.toList());listInUserToString.forEach(name -> System.out.println(name));// List<User> 转 name,name,name 字符串String listUserToString = userList.stream().map(User::getName).collect(Collectors.joining(","));System.out.println("listUserToString ====> " + listUserToString);// List<User> 转 List<UserInfo>List<UserInfo> listInUserToUserInfo = userList.stream().map(u -> new UserInfo().setId(u.getId()).setName(u.getName()).setAge(u.getAge())).collect(Collectors.toList());listInUserToUserInfo.forEach(userInfo -> System.out.println(userInfo.toString()));// List<User> 转 Map<String, User> ( 数据本身:Function.identity(),要生成的key和value都是自定义的 )Map<String, User> listToMapSU = userList.stream().collect(Collectors.toMap(User::getName, Function.identity()));System.out.println(listToMapSU);
}

count(统计数量)

@Test
public void count() {/*** count* count方法可以统计元素的个数*/List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);long numbersLength = numbers.stream().count();System.out.println("numbers集合的长度:" + numbersLength);
}

max(最大值)

@Test
public void max() {/*** max* 匹配元素最大值并返回*/List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");String max = numbers.stream().max(Comparator.comparing(Integer::parseInt)).get();System.out.println("max:" + max);
}

min(最小值)

@Test
public void min() {/*** min* 匹配元素最小值并返回*/List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");String min = numbers.stream().min(Comparator.comparing(Integer::parseInt)).get();System.out.println("min:" + min);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474343.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G的SUCI、SUPI、5G-GUTI使用场景及关系

使用场景(来源于对23.501、23.502、33.501、23.003的理解) 1、UE初始注册时&#xff0c;根据HN Public Key把SUPI加密成SUCI&#xff0c;并发送初始注册请求 2、AMF转发SUCI给AUSF和UDM进行认证&#xff0c;并获取解密后的SUPI 3、AMF根据SUPI生成一个5G-GUTI&#xff0c;并保…

2. kafka 生产者

一. 生产者消息发送流程 在消息发送的过程中&#xff0c;涉及到了两个线程&#xff1a;main线程和Sender线程。Producer发送的消息会分别经过Interceptors(拦截器)&#xff0c;Serializer(序列化器)&#xff0c;Partitioner(分区器)最终到达RecordAccumulator&#xff0c;Recor…

web应用安全和信息泄露预防

文章目录 1&#xff1a;spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2&#xff1a;服务端口的合理使用3&#xff1a;弱口令&#xff08;密码&#xff09;管理4&#xff1a;服务端攻击4.1、短信业务&#xff0c;文件上传等资源型接口1、…

智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁

近日&#xff0c;贵州省贵阳市中级人民法院对余华英拐卖儿童案做出了一审宣判&#xff0c;判处其死刑&#xff0c;剥夺政治权利终身&#xff0c;并处没收个人全部财产。这一判决不仅彰显了法律的威严&#xff0c;也再次唤起了社会对拐卖儿童犯罪的深切关注。 余华英自1993年至2…

计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机编程中的测试驱动开发&#xff08;TDD&#xff09;及其在提高代码质量中的应用 计算机编程中的测试驱动开发&#xff08;T…

【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】

目录 一、全局锁 二、表级锁 1.表锁 2.元数据锁 3.意向锁 三、行级锁 1. 行锁 2.间隙锁 3.临建锁 锁是处理并发情况下&#xff0c;对数据的一致性的关键因素&#xff0c;也是并发情况下对效率影响非常大的。 1、全局锁&#xff1a;锁定表中所有数据。 2、表级锁&#xff1a;…

thinkphp6 入门(2)--视图、渲染html页面、赋值

use think\facade\View;View::assign([name > ThinkPHP,email > thinkphpqq.com]);View::assign(data,[name > ThinkPHP,email > thinkphpqq.com]); View::fetch(index);助手函数 view(index, [name > ThinkPHP,email > thinkphpqq.com ]); 模板输出 {$na…

百度智能云 VectorDB 优势数量 TOP 1

近日&#xff0c;IDC 发布了《RAG 与向量数据库市场前景预测》报告&#xff0c;深入剖析了检索增强生成&#xff08;RAG&#xff09;技术和向量数据库市场的发展趋势。报告不仅绘制了 RAG 技术的发展蓝图&#xff0c;还评估了市场上的主要厂商。在这一评估中&#xff0c;百度智…

MySQL索引的底层实现原理是什么?

MySQL索引的底层实现主要基于B树数据结构。B树是一种平衡多路查找树&#xff0c;具有以下特点&#xff1a; 1、树的所有叶子节点都位于同一层&#xff1a; 这确保了从根节点到每个叶子节点的路径长度相同&#xff0c;保证了查询效率的一致性。 2、节点中的数据按键值大小有序…

手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导

手写数字识别&#xff08;神经网络入门&#xff09; 文章目录 手写数字识别&#xff08;神经网络入门&#xff09;实验概述实验过程数据准备模型实现线性变换层前向传播反向传播更新参数整体实现 激活函数层&#xff08;ReLU&#xff09;前向传播反向传播整体实现 Softmax层&am…

在MATLAB中导入TXT文件的若干方法

这是一篇关于如何在MATLAB中导入TXT文件的文章&#xff0c;包括示例代码和详细说明 文章目录 在MATLAB中导入TXT文件1. 使用readtable函数导入TXT文件示例代码说明 2. 使用load函数导入TXT文件示例代码说明 3. 使用importdata函数导入TXT文件示例代码说明 4. 自定义导入选项示例…

ks 小程序sig3

前言 搞了app版的快手之后 &#xff08;被风控麻了&#xff09; 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程&#xff0c; github也有开源的工具代码 自行搜索 因为我们需要调试代码&#xff0c;所以就用了下开源的工具 &#xff08;可以用chrome的F12功能&a…

解决Spring Boot整合Redis时的连接问题

前言 在使用Spring Boot整合Redis的过程中&#xff0c;经常会遇到连接问题&#xff0c;尤其是当Redis服务部署在远程服务器上时。 问题描述 当你尝试连接到Redis服务器时&#xff0c;可能会遇到以下错误&#xff1a; org.springframework.data.redis.connection.PoolExcept…

算法--“汽车加油”问题.

def greedy():n 100 # 汽车满油后可行驶的最大距离d [50, 80, 39, 60, 40, 32] # 加油站的距离k len(d) # 加油站的数量# 检查是否有加油站距离超过汽车的最大行驶距离for dist in d:if dist > n:print(no solution)returnnum 0 # 加油次数current_position 0 # 当…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日&#xff0c;2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办&#xff0c;电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合&#xff0c;满足高…

sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!

Less-5 上来先进行查看是否有注入点&#xff0c;判断闭合方式&#xff0c;查询数据列数&#xff0c;用union联合注入查看回显位&#xff0c;发现到这一步的时候&#xff0c;和前四道题不太一样了&#xff0c;竟然没有回显位&#xff1f;&#xff1f;&#xff1f; 我们看一下源…

【qt】控件3

1.setToolTip和setToolTipDuration setToolTip这个函数用来设置提醒内容 setToolTipDuration这个函数用来设置提醒时间 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->help->setToolTip("按下这个按键就可以提…

STM32 使用 STM32CubeMX HAL库实现低功耗模式

STM32 使用 HAL 库的低功耗模式测试使用 ...... 矜辰所致前言 上次画了一个 STM32L010F4 最小系统的板子&#xff0c;也做了一些基本测试&#xff0c;但是最重要的低功耗一直拖到现在&#xff0c;以前在使用 STM32L151 的时候用标准库做过低功耗的项目&#xff0c;现在都使…

js实现导航栏鼠标移入时,下划线跟随鼠标滑动

话不多说&#xff0c;上代码&#xff1a; html代码&#xff1a; <div class"nav clearfix"><div class"bottomLine"></div><ul class"clearfix"><li class"nav__item"><a href"./index.html&…

React教程第二节之虚拟DOM与Diffing算法理解

1、什么是虚拟DOM 虚拟DOM 是javascript的一个对象&#xff0c;是内存中的一种数据结构&#xff0c;以树的形式存储UI的状态&#xff0c;树中的每个节点都代表着真实的DOM&#xff0c;用来描述我们希望在页面看到的 HTML结构&#xff1b; 现在的MVVM 框架&#xff0c;大多使用…