Java8新特性学习

1 简述

公司自年初终于开始使用java8作为项目的标准jdk,在开发过程中,逐渐认识到java8的很多新特性,确实很方便.其中内容的核心,在于函数式编程,即将函数本身作为对象参数去处理.其中涉及到三个关键新特性:

  1. lambda表达式(及函数式接口)
  2. stream
  3. 方法引用
    这三个新特性的使用是相辅相成的,特别是前两者,作为本文的重点来说.

参考链接:

  1. Java8新特性,你应该了解这些

2 新特性的适用场景

lambda表达式,就我现在的使用经验,其实就是与JavaScript中的箭头函数是一样的.只不过js一直都支持将函数看做是对象参数,所以箭头函数对js更像一个语法糖.但lambda表达式对于java的改变就重要很多了,直接允许了函数式编程,这是此前版本所无法实现的.
lambda表达式最常见的使用场景是和stream一同使用.stream的详细介绍建议阅读参考链接了解.虽然适用于很多种类型,但在开发项目时,用到最多的,还是集合.

1//演示代码 2List<String> output = wordList.stream(). 3map(str->str.toUpperCase. 4collect(Collectors.toList());

以下是我对比java8和js集合中的方法,列举的一个表格(可以看到,js此前有的方便方法,java8基本都能做到):

streamType

java8

js

作用

intermediate

map

map

将stream中的每一个元素,映射为另外一个元素

intermediate

flatMap

flat,flatMap

将stream中的层次结构扁平化

intermediate

filter

filter

对每一个元素进行测试,通过测试的元素留下来

terminal

forEach

forEach

对每一个元素执行操作

intermediate

peek

无

对每一个元素执行操作

terminal

findFirst

find

查找符合条件的第一个元素

terminal

reduce

reduce

依序将元素组合起来得到一个新的值

intermediate

limit

slice

返回前n个元素

intermediate

skip

slice

跳过前n个元素(返回剩下的元素)

intermediate

sorted

sort

对元素进行排序

terminal

min

无

最小值

terminal

max

无

最大值

intermediate

distinct

无

去除重复值

terminal

allMatch

every

全部元素符合

terminal

anyMatch

some

任一元素符合

terminal

noneMatch

无

没有元素符合

以上仅为常用方法.streamType表示的是流操作的类型,intermediate类型操作后仍可继续按照流操作,terminal类型操作则会终止流操作.

参考链接:

  1. Java 8 中的 Streams API 详解
  2. js Array的原型方法

3 方法引用

方法引用本身是语法糖,它将箭头函数表示的方法引用,改用"::"替代.
注意,这里说的是方法引用,而不是方法本身,即将

stream.map(str->str.toUpperCase)

用

stream.map(String::toUpperCase)

来替换.

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java8 默认方法 default method

Java8引入了新的语言特性——默认方法(DefaultMethods)。Defaultmethodsenablenewfunctionalitytobeaddedtotheinterfacesoflibrariesandensurebinarycompatibilitywithcodewritte

Java8特性

Java8又称jdk1.8。主要新特性:Lambda表达式 −Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。方法引用 −方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

Java8函数式编程(A)

将行为作为数据传递函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升。Java8怎么支持函数式编程?主要有三个核心概念:函数接口(Function)流(Stream)聚合器(Collector)函数接口关于函数接口,两件事:函数接口是行为

Java 8中你可能没听过的10个新特性

lambda表达式,lambda表达式,还是lambda表达式。一提到Java8就只能听到这个,但这不过是其中的一个新功能而已,Java8还有许多新的特性——有一些功能强大的新类或者新的用法,还有一些功能则是早就应该加到Java里了。这里我准备介绍它的10个我个人认为非常值得了解的新特性。总会有一款适合你的,开始来看下吧。default方法

Java8 新特性

Java8新特性一、Java8新特性简介1\.简介Java8(又称为jdk1.8)是Java语言开发的一个主要版本。Java8是orecle公司于2014年3月发布,可以看成是自Java5以来最具革命性的版本。Java8为Java语言、编译器、类库、开发工具与