首页 > 编程语言 >新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算

新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算

时间:2024-06-03 10:35:26浏览次数:18  
标签:return Stream 编程 System 流式 User str new lambda

传统程序员4大本领:泛型,枚举,反射,注解

新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算

lambda表达式
// 1. 不需要参数,返回值为 5
() -> 5

// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x

// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y

// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y

// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)

链式编程
可以简化编程,代码简洁
它允许将多个函数或操作连接在一起,形成一个链条,以执行复杂的操作
String sb=new StringBuilder().append("hello").append("world").toString();

函数式接口:FunctionaInterfae 只有一个方法的接口 Runable,Function
作用:简化编程模型,在新版本的框架底层大量应用

//Function 有输入输出参数
Function function=new Function<String,String>(){
  @Override
  public String apply(String str){
     return str;
  }
}

Function<String,String> function=(str)->{return str;};

function.apply("hello");

//断定型接口Predicate:有一个输入参数,只返回bool
Predicate<String> predicte=(str)->{return str.isEmpty();};

//消费型接口Consumer:只有输入,没有输出
Consumer consumer=(str)->{System.out.print{"hello");};

链式编程

User u1=new User(1,"a",21);
User u2=new User(2,"b",22);
User u3=new User(3,"c",23);
User u4=new User(4,"d",24);
//集合是存储数据
List<User> list=Array.asList(u1,u2,u3,4u);

//计算交给stream流
//lambda 表达式,链式编程,函数式接口,Stream流式计算
//找出用户id为偶数,年龄大约23岁,用户名转为大写字母,用户名倒序,输出1个用户的查询
list.stream()
    .filter(u->{return u.getId() % 2 ==0;})
    .filter(u->{return u.getAge() >23;})
    .map(u->{return u.getName().toUpterCase();})
    .sorte((uu1,uu2)->{return uu2.compareTo(uu1);})
    .limit(1)
    .forEach(System.out::printIn);

//并行流 比for计算快100倍,比forkjoin快80倍
long start=System.currentTimeMillis();
long sum=LongStream.rangeClosed(0L,1_0000_0000L).parallel().reduce(0,Long::sum);
long end=System.currentTimeMillis();
System.out.printIn("time:"+(end-start));

Java中对于流式计算的实现
所在包: java.util.stream
应用场景:主要是对 集合数据 进行操作,其很多操作方法和sql的作用和类似,把 list 转成 流对象,目的是为了使用流的方法 => 这样就可以处理一些比较复杂的业务
常用的一些方法:

filter(对数据进行过滤)
map(对数据进行映射操作)
limit(限制数据条数)
count(求取数据量)
sorted(排序)
collect (收集集合)

异步回调CompletableFuture

//有返回值的回调
ComletableFuture<Integer> com=ComletableFuture.suppLyAsync(()->{return 1024;});

//没有返回值的回调

标签:return,Stream,编程,System,流式,User,str,new,lambda
From: https://www.cnblogs.com/chenshaojun2008/p/18228291

相关文章

  • Java Lambda表达式
    Lambda表达式Lambda表达式,也可以称为闭包,是Java8发布的最重要新特性Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)使用Lambda表达式可以使代码变的更加简洁紧凑语法:(parameter)->expression(parameter)->{statement;}parameter:参数列表,......
  • 报错信息:Unable to make field private final java.lang.Class java.lang.invoke.Seri
    jdk版本与当前MyBatisPlus版本不兼容解决方法:1.升级MyBatisPlus的版本。2.或者使用以下方法--add-opensjava.base/java.lang.invoke=ALL-UNNAMED......
  • CentOS Linux 8x 错误:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare interna
    问题描述今天安装CentOS8.5安装完之后,准备更新源仓库环境的时候突然出现错误:为仓库'appstream'下载元数据失败:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist,后面我找了好久没发现有解决这个问题的方法,后面无意看到了https://www.cnblogs.com/cainiaoaixuexi......
  • Java中的Lambda表达式与函数式接口:简化代码与提升效率
            Lambda表达式自Java8引入以来,已成为Java编程中提高代码简洁性与效率的一种重要特性。Lambda表达式允许你以匿名函数的方式来编写方法,使代码更简洁,增强了集合库的功能,尤其是在处理集合操作时。本文将探讨Lambda表达式的基本概念、函数式接口的用途,以及如何在实......
  • Spring Boot集成sse实现chatgpt流式交互
    1.什么是sse?SSE(Server-SentEvents)是一种允许服务器向客户端推送实时数据的技术,它建立在HTTP和简单文本格式之上,提供了一种轻量级的服务器推送方式,通常也被称为“事件流”(EventStream)。他通过在客户端和服务端之间建立一个长连接,并通过这条连接实现服务端和客户端的消息实......
  • JAVAEE之文件IO_数据流概念,字节流:InputStream、OutputStream,字符流:reader、writer,及实
    什么是数据流 顾名思义,I表示input,O表示output,也就是输入输出流,主要是在程序与文件之间,用于传输数据的通道。既然要传输数据,那么我们需要理解文件和程序之间哪种方向的传输是输入流,哪种传输作为输出流?我们可以举一个例子,如下图所示: IO流是JavaIO中的核心概念。流......
  • python前端streamlit模型部署
    简单介绍使用前端streamlit框架快速部署本地模型:1、模型训练:importpandasaspd#流程整合fromsklearn.pipelineimportmake_pipeline,Pipeline#数据处理fromsklearn.imputeimportSimpleImputerfromsklearn.preprocessingimportMinMaxScaler,StandardSca......
  • nginx后端健康检查nginx_upstream_check_module
    一:nginx后端健康检查ngx_http_upstream_modulenginx自带健康检查的缺陷:Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为......
  • Nginx反向代理之 upstream 模块
    upstream模块的内容应放于nginx.conf配置的http{}标签内,其默认的调度算法是rr(轮循round-robin)ngx_http_upstream_module模块官方文档upstream模块内部server标签参数说明#提示:以上的参数和专业的haproxy参数类似,但不如haproxy的参数易懂。upstream模块调度算......
  • Understanding and Mitigating the Label Noise in Pre-training on Downstream Tasks
    目录概符号说明经验性的结果NoisyModelLearning代码ChenH.,WangJ.,ShahA.,TaoR.,WeiH.,XieX.,SugiyamaM.andRajB.Understandingandmitigatingthelabelnoiseinpre-trainingondownstreamtasks.概本文讨论如果预训练模型在训练的时候存在噪声,会......