List转成Stream流,然后利用函数式编程对数据进行求和,求最大值,排序等一系列操作,简化开发,提高效率。

1.创建对象(也可以用Map)

package com.example.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;/*** @author 25952*/
@Data
@AllArgsConstructor
@ToString
public class Dog {private String dName;private String dAge;
}

2.List的Lambda操作

package com.example.java_demo;import com.example.entity.Dog;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import sun.reflect.generics.tree.VoidDescriptor;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;@SpringBootTest
class JavaDemoApplicationTests {List<Dog> list = new ArrayList<Dog>() {{add(new Dog("哈士奇", "1"));add(new Dog("德牧", "5"));add(new Dog("萨摩耶", "3"));add(new Dog("泰迪", "4"));add(new Dog("中华田园犬", "3"));add(new Dog("阿拉斯加", "2"));add(new Dog("阿拉斯加", "2"));add(new Dog("阿拉斯加", "3"));}};/*** filter 过滤*/@Testvoid listFilter() {List<Dog> collect = list.stream().filter(x -> Integer.parseInt(x.getDAge()) >= 3).collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** skip 跳过*/@Testvoid listSkip() {List<Dog> collect = list.stream().skip(1).collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** 正序排序*/@Testvoid listSortAsc() {List<Dog> collect = list.stream().sorted(Comparator.comparing(x -> x.getDAge())).collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** 倒序排序*/@Testvoid listSortDesc() {List<Dog> collect = list.stream().sorted(Comparator.comparing(Dog::getDAge).reversed()).collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** 取年龄最大的对象*/@Testvoid listMaxObj() {Dog dog = list.stream().max(Comparator.comparing(Dog::getDAge)).get();System.out.println(dog.getDName() + "-" + dog.getDAge());}/*** 取年龄最小的对象*/@Testvoid listMinObj() {Dog dog = list.stream().min(Comparator.comparing(Dog::getDAge)).get();System.out.println(dog.getDName() + "-" + dog.getDAge());}/*** 取最大值*/@Testvoid listMax() {int asInt = list.stream().mapToInt(x -> Integer.parseInt(x.getDAge())).max().getAsInt();System.out.println(asInt);double asDouble = list.stream().mapToDouble(x -> Double.parseDouble(x.getDAge())).max().getAsDouble();System.out.println(asDouble);long asLong = list.stream().mapToLong(x -> Long.parseLong(x.getDAge())).max().getAsLong();System.out.println(asLong);}/*** 取最小值*/@Testvoid listMin() {int asInt = list.stream().mapToInt(x -> Integer.parseInt(x.getDAge())).min().getAsInt();System.out.println(asInt);double asDouble = list.stream().mapToDouble(x -> Double.parseDouble(x.getDAge())).min().getAsDouble();System.out.println(asDouble);long asLong = list.stream().mapToLong(x -> Long.parseLong(x.getDAge())).min().getAsLong();System.out.println(asLong);}/*** 求和*/@Testvoid listSum() {int sum = list.stream().mapToInt(x -> Integer.parseInt(x.getDAge())).sum();System.out.println(sum);double sum1 = list.stream().mapToDouble(x -> Double.parseDouble(x.getDAge())).sum();System.out.println(sum1);long sum2 = list.stream().mapToLong(x -> Long.parseLong(x.getDAge())).sum();System.out.println(sum2);}/*** 求平均值*/@Testvoid listAvg() {double asDouble = list.stream().mapToInt(x -> Integer.parseInt(x.getDAge())).average().getAsDouble();System.out.println(asDouble);double asDouble1 = list.stream().mapToDouble(x -> Double.parseDouble(x.getDAge())).average().getAsDouble();System.out.println(asDouble1);double asDouble2 = list.stream().mapToLong(x -> Long.parseLong(x.getDAge())).average().getAsDouble();System.out.println(asDouble2);double v = list.stream().mapToInt(x -> Integer.parseInt(x.getDAge())).average().orElse(0d);System.out.println(v);}/*** 去重*/@Testvoid listDistinct() {List<Dog> collect = list.stream().distinct().collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** 根据某个字段去重*/@Testvoid fieldDistinct() {List<Dog> newList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getDName()))), ArrayList::new));System.out.println(newList);}/*** 截取*/@Testvoid listLimit() {List<Dog> collect = list.stream().limit(3).collect(Collectors.toList());for (Dog dog : collect) {System.out.println(dog.getDName() + "-" + dog.getDAge());}}/*** foreach*/@Testvoid listForEach() {list.stream().forEach(x -> {System.out.println(x.getDName() + "-" + x.getDAge());});}/*** 匹配元素*/@Testvoid listAnyMatch() {boolean b = list.stream().anyMatch(x -> Integer.parseInt(x.getDAge()) == 3);boolean b1 = list.stream().anyMatch(x -> Integer.parseInt(x.getDAge()) == 20);System.out.println(b);System.out.println(b1);boolean b2 = list.stream().allMatch(x -> Integer.parseInt(x.getDAge()) == 3);System.out.println(b2);boolean b3 = list.stream().noneMatch(x -> Integer.parseInt(x.getDAge()) == 3);boolean b4 = list.stream().noneMatch(x -> Integer.parseInt(x.getDAge()) == 20);System.out.println(b3);System.out.println(b4);}/*** 查找元素*/@Testvoid listFind() {Dog dog = list.stream().findFirst().get();System.out.println(dog.getDName() + "-" + dog.getDAge());Dog dog1 = list.stream().findAny().get();System.out.println(dog1.getDName() + "-" + dog1.getDAge());Dog dog2 = list.parallelStream().findAny().get();System.out.println(dog2.getDName() + "-" + dog2.getDAge());}/*** skip 和 limit 组合 实现内存分页*/@Testvoid skipAndLimit() {int pageNUm = list.size() / 2;int skip = 0;final int _LIMIT = 2;for (int i = 0; i <= pageNUm; i++) {System.out.println("\n=============第" + (i + 1) + "页===========");skip = i * _LIMIT;list.stream().skip(skip).limit(_LIMIT).forEach(t -> System.out.print(t + "\t"));}}/*** 以某个字段分组*/@Testvoid groupBy() {Map<String, List<Dog>> map = list.stream().collect(Collectors.groupingBy(o -> o.getDName()));map.forEach((key, value) -> {System.out.println(key);value.forEach(dog -> System.out.println("------>" + dog.getDName() + "-" + dog.getDAge()));});}
}

List 常用的 Lambda 操作相关推荐

  1. Hadoop综合大作业补交4次作业:获取全部校园新闻,网络爬虫基础练习,中文词频统计,熟悉常用的Linux操作...

    1.用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)进行词频统计. (1)开启所有的服务,并创建文件夹wwc (2)查看目录下所有文件 (3)把hdfs文件系统中文件夹里的文 ...

  2. 面试官系统精讲Java源码及大厂真题 - 42 常用的 Lambda 表达式使用场景解析和应用

    42 常用的 Lambda 表达式使用场景解析和应用 引导语 我们日常工作中,Lambda 使用比较多的场景,就是 List 或 Map 下的 Lambda 流操作,往往几行代码可以帮助我们实现多层 ...

  3. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  4. php文件有哪几种,PHP常用的文件操作函数有哪些

    PHP常用的文件操作函数有哪些 本文主要总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来.欢饮阅读参考! 一 .解析路径: 1 获得文件名: basename(); 给出一个包含有指 ...

  5. 熟悉常用的HBase操作

    熟悉常用的HBase操作 1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student)(不包括最后一列) 学号(S_No) 姓名(S_Name) 性 ...

  6. linux常用基础命令操作收集

    linux常用基础命令操作收集,以下命令基于CentOs6.x 1.日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线(哪些人登陆到了服务器) who ...

  7. legend3---lavarel常用artisan命令操作

    legend3---lavarel常用artisan命令操作 一.总结 一句话总结: 帮助:php artisan可以调出帮助命令 1.npm安装后盾js? npm install hdjs node ...

  8. Redis常用命令之操作Hash类型

    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...

  9. Mysql常用基础命令操作实战

    目录 一    启动与关闭MySQL    3 1.1    单实例MySQL启动与关闭方法    3 ※1※    常规启动关闭数据库方式(推荐)    3 1.2    多实例MySQL启动与关闭 ...

最新文章

  1. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画
  2. SAP PM 初级系列24 - 发料到维修工单
  3. android开发环境搭建教程
  4. 500强公司面试的经典正确与错误回答对比!
  5. 桥牌笔记:三个输墩压缩为一个
  6. 【机器学习】线性回归之梯度下降、多元线性回归概述
  7. 突破C++的虚拟指针--C++程序的缓冲区溢出攻击
  8. PC HARDWARE SHARE NO.4
  9. OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
  10. 行泊ADAS摄像头前装搭载同比增长54.15%,TOP10供应商领跑
  11. 【机器学习基础】IV和WOE值
  12. 【pyplot】scatter根据点的label或位置设置不同颜色
  13. 华为服务器jbod修改启动项,服务器设置jbod
  14. 无线移动通信技术快速发展历程和趋向
  15. 与NFC相关的几种卡片
  16. 图像内容修改—修改表格数字及文字
  17. 【c语言】组合数递归
  18. Virut.ce-感染型病毒分析报告
  19. karas报错filename = 'fine_tuned_net.h5', file descriptor = 24, errno = 28, error message = 'No space l
  20. flex布局实现叠在另一个div之上_flex布局

热门文章

  1. 消息队列(mq)是什么?
  2. Java面试基础知识,一次哔哩哔哩面试经历
  3. unity3d全版本百度网盘极速下载,包括unity3d 5.x及unity 4.x系列
  4. 解决谷歌浏览器打开控制台有延迟
  5. npm-rebuild
  6. 硬件防火墙 与软件防火墙
  7. 破解NET的四大神器
  8. CMake引入三方库
  9. Appium+Python appium启动夜神模拟器定位元素(三)
  10. 交换机开启DHCP Snooping