《精通Spring MVC 4》——2.8 Java 8的流和lambda表达式

2.8 Java 8的流和lambda表达式

可能你对lambda还不太了解,在Java 8中,每个集合都会有一个默认的方法stream(),它能够实现函数式风格的操作。

这些操作可以是中间操作(intermediate_operation),它会返回一个流,这样就能将其连接起来,也可以是终止操作(terminal operation),这样的话会返回一个值。

最著名的中间操作如下所示。

map:它会为列表中的每个元素都应用某个方法,并返回结果所组成的列表;
filter:它会返回匹配断言的所有元素;
reduce:它会借助一个操作和累加器(accumulator)将一个列表聚合到单个值上。
Lambda是函数表达式的便捷语法,它可以用到单个的抽象方法(Single Abstract Method)之中,也就是只包含一个函数的接口。

例如,我们可以按照如下的方式来实现Comparator接口:

Comparator<Integer> c = (e1, e2) -> e1 - e2;
在lambda之中,return关键字就是最后的表达式。

之前所使用的双冒号操作符是引用类函数的快捷方式:

Tweet::getText
之前的表达式等价于:

(Tweet t) -> t.getText()
collect方法允许我们调用一个终止操作。Collectors类是一组终止操作,它会将结果放到列表、集合或Map之中,允许进行分组(grouping)、连接(joining)等操作。

调用collect(Collectors.toList())方法将会产生一个列表,其中包含了流中的每一个元素,在我们的例子中,也就是Tweet的内容。

时间: 2024-12-12 05:52:50

《精通Spring MVC 4》——2.8 Java 8的流和lambda表达式的相关文章

java文件过滤器里的lambda表达式问题

问题描述 java文件过滤器里的lambda表达式问题 import java.io.File;public class FileNameTest{ public static void main(String[] args) { File file = new File("".""); String[] nameList = file.list((dir name) -> name.endsWith("".java""

《精通Spring MVC 4》——1.5 那就正式开始吧

1.5 那就正式开始吧 现在Web应用已经准备就绪,先看一下它是如何编写的.在进一步学习之前,我们可以将工作的成果保存到Git上. 在Windows下,需要安装Git bash,这可以在https://msysgit.github.io找到.在Mac下,如果你使用homebrew的话,很可能已经安装过Git了,否则的话,使用brew install git命令来进行安装. 如果要使用Git版本化我们的工作内容,那么可以在控制台中输入如下的命令: $ cd app $ git init 使用Int

《精通Spring MVC 4》——第1章 快速搭建Spring Web应用 1.1Spring Tool Suite简介

第1章 快速搭建Spring Web应用 在本章中,我们将会直接接触代码并搭建一个Web应用,本书的其他章节将会基于该应用进行讲解. 在这里,我们将会使用Spring Boot的自动配置功能来构建应用,这样的话,就能完全避免使用样板式的配置文件. 本书中将会使用Gradle和Java 8,但是也不必为此感到担心.如果你还在使用Maven和更早版本的Java的话,相信你会发现这些技术也是很易于使用的. 很多官方的Spring教程同时提供了Gradle构建和Maven构建,因此,如果你决定继续使用M

《精通Spring MVC 4》——2.9 使用WebJars实现质感设计

2.9 使用WebJars实现质感设计 现在,我们的应用已经很棒了,但是在美学方面却差得很多.你可能听说过质感设计(material design),这是Google的扁平化设计. 如图2-10所示,我们将会使用Materialize,这是一个非常漂亮的CSS和JavaScript库,与Bootstrap类似. 图2-10 在第1章中,我们曾经简单介绍过WebJars,现在要开始使用它们了.在依赖中,我们要添加jQuery和Materialize CSS: compile 'org.webjar

《精通Spring MVC 4》——1.6 幕后的Spring Boot

1.6 幕后的Spring Boot 如果你之前搭建过Spring MVC应用,那么可能已经习惯于编写相关的XML文件或Java注解配置类. 一般来讲,初始的步骤如下所示: 1.初始化Spring MVC的DispatcherServlet: 2.搭建转码过滤器,保证客户端请求进行正确地转码: 3.搭建视图解析器(view resolver),告诉Spring去哪里查找视图,以及它们是使用哪种方言编写的(JSP.Thymeleaf模板等): 4.配置静态资源的位置(CSS.JS): 5.配置所支

《精通Spring MVC 4》——2.4 使用Thymeleaf

2.4 使用Thymeleaf Thymeleaf是一个模板引擎,在Spring社区中,它备受关注. 它的成功在很大程度上要归因于对用户友好的语法(它几乎就是HTML)以及扩展的便利性. 如表2-1所示,现在有各种可用的扩展,并且能够与Spring Boot进行集成. 闲言少叙,现在我们将spring-boot-starter-thymeleaf依赖添加进来,这样就能启动Thymeleaf模板引擎了: buildscript { ext { springBootVersion = '1.2.5.

《精通Spring MVC 4》——2.7 结束Hello World,开始获取Tweet

2.7 结束Hello World,开始获取Tweet 好了,毕竟这本书的名字不是"精通Hello World",我们结束这一话题.借助Spring,使用Twitter的API进行查询是非常容易的事情.2.7.1 注册应用在开始之前,我们需要在Twitter的开发者控制台中注册应用. 访问https://apps.twitter.com,并创建一个新的应用. 根据你喜好为其设定一个名称,在Website和Callback URL区域中,输入http://127.0.0.1:8080(见

《精通Spring MVC 4》——2.11 小结

2.11 小结 在本章中,我们学习了如何实现良好的MVC架构,看到了Spring MVC内部的一些运行机制,并通过非常少量的配置使用了Spring Social Twitter的功能.通过使用WebJars,可以设计非常漂亮的Web应用. 在下一章中,我们会要求用户填写其基本信息(profile),这样就能自动获取他们可能感兴趣的Tweet.这也给了我们一个机会来更深入地学习表单.格式化.校验以及国际化的功能.

《精通Spring MVC 4》——2.3 Spring MVC 1-0-1

2.3 Spring MVC 1-0-1 在Spring MVC中,模型是由Spring MVC的Model或ModelAndView封装的简单Map.它可以来源于数据库.文件.外部服务等,这取决于你如何获取数据并将其放到模型中.与数据层进行交互的推荐方式是使用Spring Data库:Spring Data JPA.Spring Data MongoDB等. Spring MVC的控制层是通过使用@Controller注解来进行处理的.在Web应用中,控制器的角色是响应HTTP请求.带有@Co