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语言、编译器、类库、开发工具与