首页 > 编程语言 >java-Stream流

java-Stream流

时间:2024-04-09 16:36:11浏览次数:16  
标签:map java Stream stream Collectors list collect new

lambda表达式

定义:不管是什么对象,lambda表达式主要关注的是对数据进行了什么操作。

基本格式
(参数列表)->{ 代码 }

1.是一个匿名类并且只有一个抽象接口。(笔记)

例子:
new Thread(new Runnable(){
@Override
public void run(){
system。outprintln("新线程中run 方法被执行了")
}
})

new Thread(() ->{ system。outprintln("新线程中run 方法被执行了") )

*********************************************************************************************************
Stream流 stream: 筛选 ,去重,转换,查询,遍历
@EqualsAndHashCode //用于后期的去重使用
创建流
1 单列集合:集合对象.stream()
2 数组: arrays.stream(arr) 或者 stream.of(arr)
3 双列集合:转成单列集合后再创建 map.entrySet.stream()
map<String,Integer> map = new HashMap)<>();
map.put("黑子"."17")
map.put("桃子"."17")
map.put("黑子"."17")
map.entrySet.stream()

中间流
.distinct //去重
.filter() //设置条件,满足条件就留下

.map //可以获取list中JavaBean的某个字段,转成一个新的list。(结果回去 string,int,bool...单个类型的list)

.flatmap 可以将一个流中的每个元素都转换成一个流,然后把这些流连成一个流,也就是说,它可以把一个流中的流元素“展平”成一个流

.limit (2) 设置流的最大长度,超出的部分将被抛弃
.skip(3) 跳过流中的前N个元素,返回剩下的元素

.sorted((p1, p2) -> p1.getAge().compareTo( p1.getAge()))).collect(Collectors.toList()) 升序
.sorted( new Comparator 方法) 1-3 解释:1到3 //排序
.sorted(Comparator.comparingInt(Person::getAge).reversed()) .collect(Collectors.toList()) 降序 (reversed()这个方法是降序)

.concat(list1,list2) //俩个list合并

终结流
.forEach 对流中的元素进行遍历进行具体操作
.collect(Collectors.toList) 把当前流转成 另一个集合

.count 获取流中的元素个数
.max( new Comparator) 最大值
.Min ( new Comparator) 最小值


例子
先按年龄排序,在按价格排序 (关键字:thenComparing)
.sorted(Comparator.comparingInt(Person::getAge)
.thenComparing(Comparator.comparingInt(Person::getPrice)))
.collect(Collectors.toList()) 降序 (reversed()这个方法是降序)

 

例子1
flatMap(T -> Stream)
将流中的每一个值转换成另一个流,再把每一个流连接成为一个流
List<String> list = new ArrayList<>();
list.add("aaa bbb ccc");
list.add("ddd eee fff");
list.add("ggg hhh iii");
list = list.stream().map(s -> s.split(" “)).flatMap(Arrays::stream).collect(toList());

 

例子1
.collect(Collectors.toMap) 把当前流转,另一个map
//获取一个map集合,map的key为作者名,value为List<Book>
List<Author>authors = getAuthors()

authors.stream
key value
.collect(Collectors.toMap(new Function<Autor,String>(){ return author.getName }, new Function<Autor,List<Book>>(){return author.getBooss} ))


例子2
map<String,Integer> map = new HashMap)<>();
map.put("黑子"."17")
map.put("桃子"."17")
map.put("黑子"."17")
map.entrySet.stream()
key value
.collect(Collectors.toMap(new Function<entrySet,String>(){ return entrySet.getKey }, new Function<entrySet,String >(){return entrySet.getValue} ))


笔记:
1.如果没有终结操作,没有中间操作是不会得到执行的
2,流是一次性的,一个终结操作后,这个流就不能再被使用了。

 

标签:map,java,Stream,stream,Collectors,list,collect,new
From: https://www.cnblogs.com/ydg123/p/18124256

相关文章

  • 线上服务Java进程假死快速排查、分析
    服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下:请求业务返回状态码502,查看进程还在,意味着Java进程假死,无法响应请求了;该Java进程占比CPU较高,高达132.8%。使用top命令查看服务器整体运行情况:可以看到PID为14760的Java进程CPU占比132.8%,内存占用37.6%,......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5
    JAVA上门家政服务系统源码:一站式家政服务,微信小程序、公众号、APP、H5全平台覆盖,便捷生活触手可及在现代生活的快节奏中,人们对家政服务的需求日益旺盛。JAVA上门家政服务系统源码,以其高效、便捷的特性,结合微信小程序、公众号、APP和H5平台,为您打造了一站式的家政服务体验,让您......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5
    JAVA上门家政服务系统源码:一站式家政服务,微信小程序、公众号、APP、H5全平台覆盖,便捷生活触手可及在现代生活的快节奏中,人们对家政服务的需求日益旺盛。JAVA上门家政服务系统源码,以其高效、便捷的特性,结合微信小程序、公众号、APP和H5平台,为您打造了一站式的家政服务体验,让您......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5
    JAVA上门家政服务系统源码:一站式家政服务,微信小程序、公众号、APP、H5全平台覆盖,便捷生活触手可及在现代生活的快节奏中,人们对家政服务的需求日益旺盛。JAVA上门家政服务系统源码,以其高效、便捷的特性,结合微信小程序、公众号、APP和H5平台,为您打造了一站式的家政服务体验,让您......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5
    JAVA上门家政服务系统源码:一站式家政服务,微信小程序、公众号、APP、H5全平台覆盖,便捷生活触手可及在现代生活的快节奏中,人们对家政服务的需求日益旺盛。JAVA上门家政服务系统源码,以其高效、便捷的特性,结合微信小程序、公众号、APP和H5平台,为您打造了一站式的家政服务体验,让您......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......