简述Java 8

2019-07-04 00:00:00 java 简述

一、接口定义增强

旧:接口中只能定义最终变量和抽象方法

接口可以定义:1、默认方法 2、静态方法

二、Lamda表达式(函数式接口)

旧:匿名内部类(可以实现多个抽象方法)

1、(参数) -> 单行语句;

2、(参数) -> {多行语句};

3、(参数) -> 表达式;

示例如下:

interface Pr {

public int add(int a,int b);

}

main方法{

fun((a,b) -> a + b); //调用

}

public static void fun(Pr pr) {

System.out.print(pr.add(1,2)); //3

}

三、方法引用(函数式接口)

使用java8下java.util.function提供的四种通用函数式接口(推荐)

1)功能Function<T,R> R apply(T t)

2)消费Consumer<T> void accept(T t)

3)供给Supplier<T> T get()

4)断言Predicate<T> boolean test(T t)

BiFunction<T,U,R> R apply(T t,U u)

可以自定义函数式接口(不推荐)

定义要求:接口中只能有一个抽象方法;接口名上需要添加@FunctionInfterface注解

1、类 :: 静态方法

2、对象 :: 普通方法

3、类 :: new

4、特定类 :: 普通方法

Function<String,String> fun = String :: toUpperCase;

String result = fun.apply(“abc”); //ABC

四、流式编程(Stream)

BaseStream

子类:Stream<T> 、DoubleSteam(下面有个统计方法summaryStatistics())、IntStream、LongStream

Java8集合

Collection接口提供了默认方法

default Stream stream()获取数据流(可以理解加工厂)

default forEach(Consumer con);

Stream接口提供了很多处理集合数据的方法:

Stream map(Function fun); 逐个处理集合内数据

Stream filter(Predicate pre); 过滤

Stream skip(long n); 设置跳过的数据行数

Stream limit(long maxSize); 设置取出的数据个数

boolean allMatch(Predicate pre); 全匹配

boolean anyMatch(Predicate pre); 匹配任意一个

Option reduce(BiFunction bf)

Predicate函数式接口提供了默认方法:可以实现多个条件匹配

default Predicate or(Predicate pre);

default Predicate and(Predicate pre);

List<String> list = new ArrayList<String>();

list.add(“Java”);

list.add(“Java”);

list.add(“Android”);

List<String> newList = list.stream().distinct.map((x) -> x.toLowerCase()).filter((x) -> x.contains(“a”)).collect(Collectors.toList());

newList.forEach(System.out::println);

数据统计示例:

方式一:简单MapReduce处理分析数据示例:

double s = all.stream().map((x) -> x.getAmount() * x.getPrice()).reduce((sum,s) -> sum + s).get();

方式二:使用DoubleStream流

DoubleSummaryStatistics dss = all.stream.mapToDouble((x) -> x.getAmount() * x.getPrice()).summaryStatistics();

dss.getAverage()

dss.getCount();

dss.getMax();

dss.getSum();

    原文作者:vander
    原文地址: https://zhuanlan.zhihu.com/p/36320049
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章