函数式编程 面向对象编程:面向对象的语言,一切皆对象,如果想要调用一个函数,函数必须属于一个类或对象,然后在使用类或对象进行调用。面向对象编程可能需要多写很多重复的代码行。 函数式编程:在某些编程语言中,如js、c++,我们可以直接写一个函数,然后在需要的时候进行调用,即函数式编程。
Lambda 表达式 在Java8以前,使用Collections的sort方法对字符串排序的写法: Java8 推荐使用lambda表达式,简化这种写法。 可以看到使用lambda表示式之后,代码变得很简短并且易于阅读。
函数式接口 Functional Interface:函数式接口,只包含一个抽象方法的接口。只有函数式接口才能缩写成 Lambda 表达式。@FunctionalInterface 定义类为一个函数式接口,如果添加了第二个抽象方法,编译器会立刻抛出错误提示。
内置的函数式接口 Comparator 和 Runnable,Java 8 为他们都添加了 @FunctionalInterface 注解,以用来支持 Lambda 表达式。 Predicate 断言 指定入参类型,并返回 boolean 值的函数式接口。用来组合一个复杂的逻辑判断。 Comparator Java8 将 Comparator 升级成函数式接
Stream 使用 java.util.Stream 对一个包含一个或多个元素的集合做各种操作,原集合不变,返回新集合。只能对实现了 java.util.Collection 接口的类做流的操作。Map 不支持 Stream 流。Stream 流支持同步执行,也支持并发执行。 Filter 过滤 Filter 的入参是一个 Predicate,用于筛选出我们
Parallel-Streams 并行流。stream 流是支持顺序和并行的。顺序流操作是单线程操作,串行化的流无法带来性能上的提升,通常我们会使用多线程来并行执行任务,处理速度更快。
Map 集合 Java8 针对 map 操作增加了一些方法,非常方便 1、删除元素使用removeIf()方法。 2、putIfAbsent(key, value) 如果指定的 key 不存在,则 put 进去。 3、map 转换。 4、map遍历。