Lambda表达式使用2

  1.概述
  
  本篇主要介绍lambda中常用的收集器,收集器的作用就是从数据流中生成需要的数据接口。
  
  最常用的就是Collectors.toList(),只要将它传递给collect()函数,就能够使用它了。
  
  在我们使用收集器的时候经常会用到“方法引用”这样的简写语法:
  
  方法引用:ClassName::methodName
  
  2.代码示例
  
  按照收集器的作用分类
  
  公共代码:
  
  @Data
  
  @NoArgsConstructor
  
  @AllArgsConstructor
  
  public class Artist {
  
  private String name;
  
  private String age;
  
  private boolean isMan;
  
  List<Artist> artists = Lists.newArrayList();
  
  Artist artist1 = new Artist("kido", "28", false);
  
  Artist artist2 = new Artist("tom", "23", true);
  
  Artist artist3 = new Artist("whale", "22", false);
  
  Artist artist4 = new Artist("jack", "26", true);
  
  artists.add(artist1);
  
  artists.add(artist2);
  
  artists.add(artist3);
  
  artists.add(artist4);
  
  // 1.方法引用:ClassName::methodName
  
  List<String> list = artists.stream().map(Artist::getName).collect(Collectors.toList());
  
  list.forEach(name -www.michenggw.com> System.out.println(name));
  
  // 2.元素顺序,集合有序流就有序,集合无序流也无序,使用sorted()可以使得流变得有序
  
  Set<Integer> numbers = new HashSet<>(Arrays.asList(4, 3, 2, 1, 6, 9, 8, 10));
  
  numbers.stream().forEach(x -> System.out.println(x));
  
  System.out.println("---------------------------");
  
  List<Integer> numbersOrder = numbers.stream().sorted().collect(Collectors.toList());
  
  numbersOrder.forEach(x -> System.out.println(x));
  
  // 3.使用收集器, toList() toSet()等
  
  Set<String> set = artists.stream().map(Artist::getName).collect(Collectors.toSet());
  
  set.forEach(x ->yongshiyule178.com/ System.out.println(x));
  
  Map<String, String> map = artists.stream(www.quwanyule157.com ).collect(Collectors.toMap(Artist::getName, Artist::getAge));
  
  map.forEach((key, value) -> System.out.println(key + "<--->" + value));
  
  // 4.转换成值, 找出年龄最大的
  
  Optional<Artist> collect = artists.stream().collect(Collectors.maxBy(Comparator.comparing(item -> item.getAge())));
  
  System.out.println(collect.get());
  
  // 5.数据分块, Predicate对象为true和false
  
  Map<Boolean, List<Artist>> map2 = artists.stream().collect(Collectors.partitioningBy(Artist::isMan));
  
  map2.forEach((key, value) -> {System.out.println(key + "<--->" +value);});
  
  // 6.数据分组,按照姓名分组
  
  Map<String, List<Artist>> map3 = artists.stream().collect(Collectors.groupingBy(Artist::getAge));
  
  map3.forEach((key, value) -> {System.out.println(key + "<--->" +value);});
  
  // 7.字符串,将收集流中的数据生成字符串
  
  String string = artists.stream().map(item www.mhylpt.com/ -> item.getName()).collect(Collectors.joining(", ", "[", "]"));
  
  System.out.println(string);
  
  // 8.组合收集器, 使用groupingBy先分组在计数
  
  Map<Boolean, Long> map4 = artists.stream().collect(Collectors.groupingBy(Artist::isMan, Collectors.counting()));
  
  map4.forEach((key, value) -> {System.out.println(key + "<--->" +value);});

转载于:https://www.cnblogs.com/qwangxiao/p/10113051.html

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

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

相关文章

notepad++ 使用去掉自动检查红线

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 notepad新升级了之后就有自动判断的红线&#xff0c;单词拼错了就给提示&#xff0c;看着这红线实在难受 在 菜单选项&#xff1a;[插件…

cAdvisor+InfluxDB+Grafana 监控Docker

容器的监控方案其实有很多&#xff0c;有docker自身的docker stats命令、有Scout、有Data Dog等等&#xff0c;本文主要和大家分享一下比较经典的容器开源监控方案组合&#xff1a;cAdvisorInfluxDBGrafan 一、概念 1). InfluxDB是什么nfluxDB是用GO语言编写的一个开源分布式时…

C语言return关键字

return 用来终止一个函数并返回其后面跟着的值。return &#xff08;Val&#xff09;&#xff1b;//此括号可以省略。但一般不省略&#xff0c;尤其在返回一个表达式的值时。return 可以返回些什么东西呢&#xff1f;看下面例子&#xff1a;char * Func(void){char str[30];…r…

win7旗舰版怎么降级到专业版

一、操作准备及注意事项 1、UltraISO光盘制作工具9.5 2、备份C盘及桌面文件 二、win7旗舰版改成专业版的步骤 1、当前系统为Win7 SP1 64位旗舰版&#xff1b; 2、按WinR打开运行&#xff0c;输入regedit打开注册表编辑器&#xff0c;定位到HKEY_LOCAL_MACHINE\Software\Microso…

JPA criteria 查询:类型安全与面向对象

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 JPA的标准查询,名为:JPA criteria查询. 相比JPQL,其优势是类型安全,更加的面向对象.使用标准查询,开发人员可在编译的时候就检查 查询的…

Algs4-1.4.18数组的局部最小元素

1.4.18数组的局部最小元素。编写一个程序&#xff0c;给定一个含有N个不同整数的数组&#xff0c;找到一个局部最小元素:满足a[i]<a[i-1],且a[i]<a[i1]的索引i。程序在最坏情况下所需的比较次数为~2lgN。答&#xff1a;检查数组的中间值a[N/2]以及和它相邻的元素a[N/2-1]…

编程技能和做员工的技能——哪个更重要?

摘要&#xff1a;不管我们程序员如何认识这个问题&#xff0c;如果你想在给别人编程打工中获得事业成功&#xff0c;编程技能不是第一重要的。学会如何做一个好的员工才是重要的&#xff0c;甚至是非常重要的。从最最基本的层面上讲&#xff0c;每个员工都应该为最求两种基本的…

nginx-exporter安装使用

一、没有vts的启动方式 #nginx_exporter -telemetry.address:9113 -nginx.scrape_uri"http://127.0.0.1:10000/nginx_statusnginx_exporter -telemetry.address:9113 -nginx.scrape_uri"https://xx.xx.xx.xx:18443" -insecure #端口9113应该是nginx_exporter监…

spring data jpa 的 in 查询 Specification 实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 只是一个简单需求&#xff1a; 查询所有部门id 属于 idList 的数据 Page<WorkWeight> page workWeightRepository.findAll(new…

在移动互联网上赚钱,行不行

移动互联网已被证实是互联网产业发展的大趋势。不过&#xff0c;究竟如何赚钱&#xff0c;对海外企业与中国企业来说都是难题。本月初&#xff0c;几位业界大佬与风投来了一番讨论&#xff0c;议题还是一个“在移动互联网上赚钱&#xff0c;行还是不行”。 百度试图通过用户习惯…

计算机网络知识简单介绍

一、网络基础 1.网络指的是什么&#xff1f; 计算机与计算机之间通过物理链接介质&#xff08;网络设备&#xff09;连接到一起。 计算机与计算机之间基于网络协议通信&#xff08;网络协议就相当于计算机界的英语&#xff09; 2.osi七层协议&#xff1a; 互联网协议按照功能不…

Linux下安装FFmpeg

FFmpeg官网&#xff1a;http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure…

HTTP协议状态码详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收&#xff0c;且仍未被拒绝。客户端应…

【Python web 开发】viewset 实现商品详情页的接口

我们如何来完成商品详情页的接口呢&#xff1f; 首先要配置一个商品详情的url 按照我们正常的接口配法 &#xff0c;应该是后面要加一个id 的&#xff0c;为什么这里没有加id 呢? ,应该是rooter register 的作用吧&#xff0c;等我在学习一遍基础再来回答&#xff1f; 那么我…

Ignite中的机器学习介绍

为什么80%的码农都做不了架构师&#xff1f;>>> 本系列共6篇文章&#xff0c;会通过一些代码示例&#xff0c;讲解如何在Ignite中使用机器学习库&#xff0c;本文是本系列的第一篇。 从Ignite的2.4版本开始&#xff0c;机器学习就可以用于生产环境了。在这个版本中…

4G发牌或提早 电信联通面临艰难抉择

曾几何时遥不可及的4G&#xff0c;上马的时间可能要比预期来的要早。今年3月&#xff0c;工信部部长苗圩表示&#xff0c;预计国内需要2-3年才会发放4G牌照。话音犹在耳&#xff0c;苗圩部长9月11日表示&#xff0c;“工信部已决定将于一年左右的时间发放TD-LTE牌照”。 工信部…

mysql 的 sql 执行计划详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 引言&#xff1a; 实际项目开发中&#xff0c;由于我们不知道实际查询的时候数据库里发生了什么事情&#xff0c;数据库软件是怎样扫描…

2018-10-28

我的博客即将入驻“云栖社区”&#xff0c;诚邀技术同仁一同入驻。

win10+vscode部署java开发环境

目录 Java开发插件配置&#xff1a;调试&#xff1a;快捷键&#xff1a;启动配置文件launch.json:启动配置说明&#xff1a;Launch:Attach:User Setting:遇到的问题&#xff1a;参考&#xff1a;Java开发插件配置&#xff1a; Microsoft有个官方的插件Java Extension Pack&…

类的带参方法有哪几部分构成?

类的带参方法有哪几部分构成&#xff1f; 发布于2015-11-08 12:27 main函数可以不带参数,也可以带参数&#xff0c;这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个&#xff0c;还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字…