java8 常用操作案例【经典版】超赞!

目录

一 案例

1.1  对象转list

1.2  过滤对象

1.3  排序

1.4 匹配

1.5 最大值最小值

1.6 拼接字符串

1.7  求和

1.8  分组

1.9 分组求和

1.10 综合案例


一 案例

1.1  对象转list

    /*** @author admin对象转map ;  mapper层实体类获取,到业务层转换为DTO,* @return void*/public static void duixiangToMap(){List<User> list = Arrays.asList(new User(1L, "张三", 18),new User(2L, "李四", 20),new User(3L, "王五", 33),new User(4L, "赵六", 44));List<UserDTO> userDTOList = list.stream().map(obj -> {UserDTO userDTO = new UserDTO(obj.getId(), obj.getName(), obj.getAge());return userDTO;}).collect(Collectors.toList());userDTOList.forEach(System.out::println);}

结果:

1.2  过滤对象

    /*** @author admin* @description       案例2:  过滤长度大于7* @return void*/public static void duiFilter(){List<String> list = Arrays.asList(  "SpringBoot",   "SpringCloud", "Spring", "SpringMVC","mybatis","html",  "git"  );        List<String> stringList = list.stream().filter(obj -> obj.length() > 7).collect(Collectors.toList());     System.out.println(stringList);}

1.3  排序

    public static void testSorted(){List<String> list = Arrays.asList("SpringBoot",                "SpringCloud",                "Spring","SpringMVC",                "mybatis",                "html",                "git");List<String> collect = list.stream().sorted().collect(Collectors.toList());System.out.println(collect);//根据长度进行排序List<String> collect1 = list.stream().sorted(Comparator.comparing(String::length)).collect(Collectors.toList());System.out.println(collect1);//limit截取List<String> collect2 = list.stream().sorted(Comparator.comparing(String::length)).limit(3).collect(Collectors.toList());System.out.println(collect2);//limit截取List<String> collect3 = list.stream().sorted(Comparator.comparing(String::length).reversed()).limit(3).collect(Collectors.toList());System.out.println(collect3);}

1.4 匹配

          /*** @author admin* @description       match 匹配allMatch检查是否匹配所有元素,符合才返回trueanyMatch检查是否至少匹配一个元素*/public static void testAllOrAnyMatch(){List<String> list = Arrays.asList("SpringBoot","SpringCloud","Spring","SpringMVC","mybatis","html","git");boolean allMatch = list.stream().allMatch(obj -> obj.length() > 5);System.out.println(allMatch);boolean anyMatch = list.stream().anyMatch(obj -> obj.length() > 10);System.out.println(anyMatch);}

1.5 最大值最小值

    /*** @author admin求最大值和最小值* @return void*/public static void testMaxMin(){List<User> list = Arrays.asList(new User(1L, "张三", 18),new User(2L, "李四", 20),new User(3L, "王五", 33),new User(4L, "赵六", 44));Optional<User> userOptional = list.stream().max(Comparator.comparingInt(User::getAge));System.out.println(userOptional.get().getAge());Optional<User> userOptional1 = list.stream().min(Comparator.comparingInt(User::getAge));System.out.println(userOptional1.get().getAge());}

1.6 拼接字符串

/**
拼接字符串
*/
public static void joinStr() {String collect = Stream.of("spt", "smvc","111").collect(Collectors.joining("@" ));System.out.println("r:"+collect);
}

结果:

1.7  求和

/**
* @author admin求和      
* @return void
*/
public static void qiuHe(){Integer value = Stream.of(1, 2, 3, 4, 5, 6).reduce((item1,item2) -> item1 + item2).get();System.out.println(value);
//不适用lambda表达式
Integer value1 = Stream.of(1, 2, 3, 4, 5, 6).reduce(new BinaryOperator<Integer>() {@Overridepublic Integer apply(Integer integer, Integer integer2) {return integer + integer2;    }}).get();
System.out.println("value1:"+value1);
//10作为初始值,然后和第一个数相加,结果再与第二个数相加,直到所有的数相加完成为止Integer value3 = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9).reduce(10, (sum, item) -> sum + item);System.out.println("value3:"+value3);
}

1.8  分组

public static void   qiuByGroup() {List<String> list = Arrays.asList("SpringBoot", "SpringCloud","Spring", "SpringMVC", "mybatis", "html","git");Map<Boolean, List<String>> listMap = list.stream().collect(partitioningBy(obj -> obj.length() > 8));listMap.forEach((key, value) -> {System.out.println(key);value.forEach(System.out::println);System.out.println();});
}

1.9 分组求和

public static void  qiuByGroupSUm(){//根据学生的省份进行分组List<Student> students = Arrays.asList(new Student("⼴东", 23),        new Student("⼴东", 24),        new Student("⼴东", 23),new Student("北京", 22),        new Student("北京", 20),        new Student("北京", 20),        new Student("海南", 25));Map<String, List<Student>> collect = students.stream().collect(Collectors.groupingBy(obj -> obj.getName()));collect.forEach((key,value)->{    System.out.println(key);    value.forEach(System.out::println);});//统计学生的各个年龄信息IntSummaryStatistics summaryStatistics = students.stream().collect(Collectors.summarizingInt(Student::getAge));System.out.println("平均值:"+summaryStatistics.getAverage());System.out.println("人数:"+summaryStatistics.getCount());System.out.println("最大值:"+summaryStatistics.getMax());System.out.println("最小值:"+summaryStatistics.getMin());System.out.println("总和:"+summaryStatistics.getSum());
}

1.10 综合案例

Java 8 Stream API:强大而灵活的数据处理流水线

public static void testTen(){
//总价 35List<VideoOrder> videoOrders1 = Arrays.asList(new VideoOrder("20190242812", "springboot教程", 3),new VideoOrder("20194350812", "微服务SpringCloud", 5),new VideoOrder("20190814232", "Redis教程", 9),new VideoOrder("20190523812", "⽹⻚开发教程", 9),new VideoOrder("201932324", "百万并发实战Netty", 9));//总价 54//List<VideoOrder> videoOrders2 = Arrays.asList(new VideoOrder("2019024285312", "springboot教程", 3),new VideoOrder("2019081453232", "Redis教程", 9),new VideoOrder("20190522338312", "⽹⻚开发教程", 9),new VideoOrder("2019435230812", "Jmeter压⼒测试", 5),new VideoOrder("2019323542411", "Git+Jenkins持续集成", 7),new VideoOrder("2019323542424", "Idea全套教程", 21));//交集List<VideoOrder> intersectionList = videoOrders1.stream().filter(videoOrders2::contains).collect(Collectors.toList());System.out.println("交集=:"+intersectionList);//差集1List<VideoOrder> diffList1 = videoOrders1.stream().filter(obj -> !videoOrders2.contains(obj)).collect(Collectors.toList());System.out.println("差集1="+diffList1);//并集List<VideoOrder> allVideoOrder = videoOrders1.parallelStream().collect(Collectors.toList());      allVideoOrder.addAll(videoOrders2);System.out.println("并集="+allVideoOrder);//去重并集List<VideoOrder> allVideoOrderDistinct = allVideoOrder.stream().distinct().collect(Collectors.toList());System.out.println("去重并集="+allVideoOrderDistinct);//两个订单平均价格double videoOrderAvg1 = videoOrders1.stream().collect(Collectors.averagingInt(VideoOrder::getMoney));System.out.println("订单1平均价格="+videoOrderAvg1);double videoOrderAvg2 = videoOrders2.stream().collect(Collectors.averagingInt(VideoOrder::getMoney));System.out.println("订单2平均价格="+videoOrderAvg2);//两个订单总价格long sum1 = videoOrders1.stream().collect(Collectors.summarizingInt(VideoOrder::getMoney)).getSum();System.out.println("订单1总价格="+sum1);long sum2 = videoOrders2.stream().collect(Collectors.summarizingInt(VideoOrder::getMoney)).getSum();System.out.println("订单2总价格="+sum2);
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

《python语言程序设计》2018版第8章18题几何circle2D类(中部)

第一、重新分析 第一-1、我设计的第一模式第一-1-1、遇到的逻辑分析迷雾第一-1-2、无畏挣扎后的无奈 第二-1、我就把你们两个放到一起,第二-2、我的想法 当我看到了这个2个园并且比对. 第一-1、我设计的第一模式 设计一个最抽象的Circle2D类. 这个类只包含一个x,y和circle 这个…

初始C++中的string与迭代

常用的string构造相关类的接口 string类是一个管理字符串的字符数组&#xff0c;string类的出现方便管理我们日常所遇见的&#xff0c;字符名&#xff0c;字符串等等。下面们介绍一下常见的string类接口。 string(); 默认构造&#xff0c;构造空的string类 int main() { …

深度学习电脑独显GPU占用一直0%解决方式

在系统设置里面把硬件加速GPU计划关了 然后重启 再随便跑个模型 打开任务管理器可以看到独显开始工作了 再在GPU1中将3D改成Cuda即可

Vue项目之Element-UI(Breadcrumb)动态面包屑效果 el-breadcrumb

效果预览 需要导航的页面Vue.js 最笨的方法就是在每个需要面包屑的页面中固定写好 <template><div class="example-container"><el-breadcrumb separator="/"

【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口

目录 一、C语言文件接口回顾 C语言基础知识 C中文件操作示例 二、系统文件概念及接口 重定向基本理解的回顾 文件的基本概念 系统调用接口 open read write close lseek 什么是当前路径 一、C语言文件接口回顾 引言&#xff1a;我们并不理解文件&#xff01;从语…

springboot实战学习(7)(JWT令牌的组成、JWT令牌的使用与验证)

接着上篇博客的学习。上篇博客是在基本完成用户模块的注册接口的开发以及注册时的参数合法性校验的基础上&#xff0c;基本完成用户模块的登录接口的主逻辑以及提到了问题&#xff1a;"用户未登录&#xff0c;需要通过登录&#xff0c;获取到令牌进行登录认证&#xff0c;…

TypeError: a bytes-like object is required, not ‘str‘ - 完美解决方法

&#x1f680;TypeError: a bytes-like object is required, not str - 完美解决方法&#x1f4a1; &#x1f680;TypeError: a bytes-like object is required, not str - 完美解决方法&#x1f4a1;摘要引言正文1. 错误背景&#xff1a;字节与字符串的区别&#x1f440;2. 错…

告别ESLint噩梦!轻松几步解决 indent 与 react/jsx-indent-props 的 空格 冲突!

话不多说&#xff0c;直接上代码&#xff0c;下面是截取的一部分 eslint 配置。可以看到我设置了四个空格和标签属性对齐首个。 "rules": {"indent": ["error", 4], // 四个空格"react/jsx-indent-props": ["error", "…

双虚拟机部署php项目

前言 经过前面的学习,我们对分布式部署有了一定的了解,这次我们尝试做些东西 准备 我打算用虚拟机部署一个外联网盘 一台虚拟机安装php另一台安装MySQL,但是之前已经安装过 MariaDB 了,就不打算改了。 通常MariaDB与MySQL兼容性很好,可以作为替代使用。彩虹外链网盘项目…

【C++11】异常处理

目录 一、异常的引入 二、C异常的关键字 三、异常的抛出与处理规则 四、异常缺陷的处理 五、自定义异常体系 六、异常规范 七、异常安全 八、异常的优缺点 1.优点 2.缺点 一、异常的引入 传统的C语言处理异常的方式有两种&#xff1a; 1.终止程序&#xff1a;使用as…

CSS 选择器的分类与使用要点一

目录 非 VIP 用户可前往公众号进行免费阅读 标签选择器 id 选择器 类选择器 介绍 公共类 CSS 中优先用 class 选择器,慎用 id 选择器 后代选择器 交集选择器 以标签名作为开头 以类名作为开头 连续交集 并集选择器(分组选择器) 通配符* 儿子选择器 >(IE7…

变量常量标识符

1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元&#xff0c;是存储数据的基本单元变量的组成包括&#xff1a;数据类型、变量名、值&#xff0c;后文会具体描述变量的本质作用就是去记录数据的&#xff0c;比如说记录一个人的身高、体重、年龄&#xff0c;就需要去…

PP-HGNet(High Performance GPU Net)

发展历程&#xff1a; DenseNet -> VoVNet -> HGNet VoVNet是DenseNet的改进&#xff0c;如图&#xff1a; VoVNet论文网址&#xff1a; https://arxiv.org/pdf/1904.09730 HGNet模型简介 PP-HGNet(High Performance GPU Net) 是百度飞桨视觉团队自研的更适用于 GPU…

【AI大模型】对接LLM API

本章节主要介绍四种大语言模型&#xff08;ChatGPTAPI、文心一言、讯飞星火、智谱 GLM&#xff09;的 API 申请指引和 Python 版本的原生 API 调用方法。 文心一言&#xff1a;当前无赠送新用户 tokens 的活动&#xff0c;推荐已有文心 tokens 额度用户和付费用户使用&#xf…

果断收藏!2024年最好用的七款高效论文写作神器

在2024年&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI论文写作工具成为学术研究和写作领域的一大助力。这些工具不仅能够显著提高写作效率&#xff0c;还能帮助学者和学生节省时间&#xff0c;减少熬夜&#xff0c;同时保证论文质量。以下是七款高效且值得收藏的AI论…

Python_控制循环语句

if语句单分支结构的语法形式如下&#xff1a; 【操作】输入一个数字&#xff0c;小于10&#xff0c;则打印这个数字(if_test01.py)&#xff1a; num input("输入一个数字&#xff1a;") if int(num)<10: print("小于10的数&#xff1a;"num)条件表达式…

2024年华为杯数学建模E题-高速公路应急车道启用建模-基于YOLO8的数据处理代码参考(无偿分享)

利用YOLO模型进行高速公路交通流量分析 识别效果&#xff1a; 免责声明 本文所提供的信息和内容仅供参考。尽管我尽力确保所提供信息的准确性和可靠性&#xff0c;但我们不对其完整性、准确性或及时性作出任何保证。使用本文信息所造成的任何直接或间接损失&#xff0c;本人…

资源创建方式-Job

Job: 容器按照持续运行的时间可分为两类&#xff0c;服务类容器&#xff0c;和工作类容器 服务类容器通常持续提供服务&#xff0c;需要一直运行&#xff0c;比如HTTP,Server&#xff0c;Daemon等&#xff0c; 工作类容器则是一次性任务&#xff0c;比如批处理程序&#xff0…

stm32单片机个人学习笔记7(TIM定时中断)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…

数值计算 --- 平方根倒数快速算法(中)

平方根倒数快速算法 --- 向Greg Walsh致敬&#xff01; 1&#xff0c;平方根倒数快速算法是如何选择初值的?WTF中的神秘数字究竟是怎么来的&#xff1f; 花开两朵&#xff0c;各表一枝。在前面的介绍中&#xff0c;我们已经知道了这段代码的作者在函数的最后使用了NR-iteratio…