package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Predicate {
boolean test(T var1);
default Predicate and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> {
return this.test(t) && other.test(t);
};
}
default Predicate negate() {
return (t) -> {
return !this.test(t);
};
}
default Predicate or(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> {
return this.test(t) || other.test(t);
};
}
static Predicate isEqual(Object targetRef) {
return null == targetRef ? Objects::isNull : (object) -> {
return targetRef.equals(object);
};
}
static Predicate not(Predicate<? super T> target) {
Objects.requireNonNull(target);
return target.negate();
}
}
可以理解为一个比较器 常用方法 test() 返回一个boolean 值
negate() 取反比较(相比于test) 返回当前实例 可以链式调用
执行结果:
false
true
Function :
源码:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Function<T, R> {
R apply(T var1);
default Function<V, R> compose(Function<? super V, ? extends T> before) {
Objects.requireNonNull(before);
return (v) -> {
return this.apply(before.apply(v));
};
}
default Function<T, V> andThen(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (t) -> {
return after.apply(this.apply(t));
};
}
static Function<T, T> identity() {
return (t) -> {
return t;
};
}
}
函数式操作,学习这个需要对泛型(java1.5)有一定的了解,比如:
CallBack
List<? super Android>
List<? extends Method>
List<? super Object>
Map<K,V>
apply() :
Function<Integer,Integer> function1 = integer -> integer*=3;
System.out.println(function1.apply(6));
输出结果:
18
compose:
private static void functionMethod() {
Function<Integer, Integer> function1 = integer -> integer *= 3;
System.out.println(function1.apply(6));
Function<Integer,Integer> function4 = integer -> integer *= 3;
System.out.println(function1.compose(function4).apply(6));
Function<String, String> function2 = (user) -> user.substring(0, user.length() - 1);
System.out.println(function2.apply(“那一年 风吹半夏”));
Function<Person, Boolean> function3 = (person) -> person.getName().isBlank();
}
输出:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!
以下是总结出来的字节经典面试题目,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。
字节高级Android经典面试题和答案
888 (备注Android)**
[外链图片转存中…(img-gVIYnpQ3-1711776193498)]
最后
我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!
以下是总结出来的字节经典面试题目,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。
字节高级Android经典面试题和答案
[外链图片转存中…(img-PeErx9tL-1711776193499)]
[外链图片转存中…(img-wZmAnjri-1711776193499)]