| Supplier供给型接口 | 无 | T | 返回类型为T的对象,接口定义的方法:T get() |
| Function<T, R>函数式接口 | T | R | 对类型为T的对象应用操作,并R类型的返回结果。接口定义的方法:R apply(T t) |
| Predicate断言型接口 | T | boolean | 确定类型为T的对象是否满足约束条件,并返回boolean类型的数据。接口定义的方法:boolean test(T t) |
其他函数接口
除了四大核心函数接口外,Java8还提供了一些其他的函数式接口。
| 函数式接口 | 参数类型 | 返回类型 | 使用场景 |
| — | — | — | — |
| BiFunction(T, U, R) | T, U | R | 对类型为T,U的参数应用操作,返回R类型的结果。接口定义的方法:R apply(T t, U u) |
| UnaryOperator(Function子接口) | T | T | 对类型为T的对象进行一 元运算, 并返回T类型的 结果。 包含方法为 T apply(T t) |
| BinaryOperator (BiFunction 子接口) | T, T | T | 对类型为T的对象进行二 元运算, 并返回T类型的 结果。 包含方法为 T apply(T t1, T t2) |
| BiConsumer<T, U> | T, U | void | 对类型为T, U 参数应用 操作。 包含方法为 void accept(T t, U u) |
| ToIntFunction | T | int | 计算int值的函数 |
| ToLongFunction | T | long | 计算long值的函数 |
| ToDoubleFunction | T | double | 计算double值的函数 |
| IntFunction | int | R | 参数为int 类型的函数 |
| LongFunction | long | R | 参数为 long类型的函数 |
| DoubleFunction | double | R | 参数为double类型的函数 |
1.接口说明
Consumer接口是消费性接口,无返回值。Java8中对Consumer的定义如下所示。
@FunctionalInterface
public interface Consumer {
void accept(T t);
default Consumer andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
2.使用示例
public void handlerConsumer(Integer number, Consumer consumer){
consumer.accept(number);
}
@Test
public void test1(){
this.handlerConsumer(10000, (i) -> System.out.println(i));
}
1.接口说明
Supplier接口是供给型接口,有返回值,Java8中对Supplier接口的定义如下所示。
@FunctionalInterface
public interface Supplier {
T get();
}
2.使用示例
public List getNumberList(int num, Supplier supplier){
List list = new ArrayList<>();
for(int i = 0; i < num; i++){
list.add(supplier.get())
}
return list;
}
@Test
public void test2(){
List numberList = this.getNumberList(10, () -> new Random().nextInt(100));
numberList.stream().forEach(System.out::println);
}
1.接口说明
Function接口是函数型接口,有返回值,Java8中对Function接口的定义如下所示。
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
default Function<V, R> compose(Function<? super V, ? extends T> before) {
Objects.requireNonNull(before);
return (V v) -> apply(before.apply(v));
}
default Function<T, V> andThen(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (T t) -> after.apply(apply(t));
}
static Function<T, T> identity() {
return t -> t;
}
}
2.使用示例
public String handlerString(String str, Function<String, String> func){
return func.apply(str);
}
@Test
public void test3(){
String str = this.handlerString(“binghe”, (s) -> s.toUpperCase());
System.out.println(str);
}
1.接口说明
Predicate接口是断言型接口,返回值类型为boolean,Java8中对Predicate接口的定义如下所示。
@FunctionalInterface
public interface Predicate {
boolean test(T t);
default Predicate and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
总结
我个人认为,如果你想靠着背面试题来获得心仪的offer,用癞蛤蟆想吃天鹅肉形容完全不过分。想必大家能感受到面试越来越难,想找到心仪的工作也是越来越难,高薪工作羡慕不来,却又对自己目前的薪资不太满意,工作几年甚至连一个应届生的薪资都比不上,终究是错付了,错付了自己没有去提升技术。
这些面试题分享给大家的目的,其实是希望大家通过大厂面试题分析自己的技术栈,给自己梳理一个更加明确的学习方向,当你准备好去面试大厂,你心里有底,大概知道面试官会问多广,多深,避免面试的时候一问三不知。
大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!
有底,大概知道面试官会问多广,多深,避免面试的时候一问三不知。
大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:
[外链图片转存中…(img-Fnh8piSL-1718869855560)]
[外链图片转存中…(img-XLZlCcao-1718869855561)]
[外链图片转存中…(img-yLb4uy2r-1718869855561)]
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!