您的位置 首页 java

Java Stream 函数式接口外部实例的引用

Java Function Interface 函数式接口:
Stream.empty()
.filter(Predicate)
. map ( Function )
. forEach (Consumer);

每处调用持有唯一 Function Interface 实例, Function Interface 对象可持有外部“不可变”对象。
进而将外部对象嵌入Stream操作中,借以完成一些功能。

如:创建用于去重的Predicate
public static <T, R> Predicate<T> distinctByKey(Function<T, R> keyExtractor) {
// 创建对象map
ConcurrentHashMap <R, Boolean > map = new ConcurrentHashMap<>();
// 返回一个Predicate对象实例
return t ->
// 持有外部map引用
map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE)
// 不存在的返回V为NULL
== null;
}
该方法虽然在调用结束后结束了 生命周期 ,但map引用被到了Stream的生命周期,直到Stream终端操作调用结束后释放。

诸如此类功能可以进行多种扩展,如:

.map dao -> vo or mapper 添加依赖其它对象的属性

注意:外部引用对象要考虑是否 多线程 安全!

文章来源:智云一二三科技

文章标题:Java Stream 函数式接口外部实例的引用

文章地址:https://www.zhihuclub.com/178307.shtml

关于作者: 智云科技

热门文章

网站地图