java流式传输对象_使用Java 8在地图上流式传输

java流式传输对象

映射流小 在本文中,我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流,并将Stream接口扩展为MapStream! 即使在复杂的情况下,此添加将使保持流的具体性和可读性变得更加容易。 希望这将允许您继续流式传输而不会过早收集结果。

Java 8最大的功能之一就是能够流式处理对象集合。 通过将.stream()方法添加到Collection接口中,使用此新功能突然扩展了Java语言中的每个集合。 其他数据结构(例如Map-interface)由于不是严格意义上的集合,因此未实现该方法。

MapStream将使用两个类型参数,一个键和一个值。 通过指定Map.Entry <K,V>作为类型参数,它还将扩展标准Stream接口。 这将允许我们直接从任何Java映射构造MapStream。

public interface MapStream<K, V> extends Stream<Map.Entry<K, V>> {...
}

多态性的概念告诉我们,只要新的返回类型是旧的返回类型的更具体的实现,子组件可能会更改覆盖方法的返回类型。 我们将在定义MapStream接口时使用它,以便对于每个链接操作,都返回一个MapStream而不是Stream。

public interface MapStream<K, V> extends Stream<Map.Entry<K, V>> {@Override MapStream<K, V> filter(Predicate<? super Map.Entry<K, V>> predicate);@Override MapStream<K, V> distinct();@OverrideMapStream<K, V> sorted(Comparator<? super Map.Entry<K, V>> comparator);...
}

某些操作仍将需要返回普通Stream。 如果操作更改了流元素的类型,我们将无法确保新类型将是Map.Entry。 但是,我们可以添加其他方法以在具有键-值对的类型之间进行映射。

@Override<R> Stream<R> map(Function<? super Map.Entry<K, V>, ? extends R> mapper);<R> Stream<R> map(BiFunction<? super K, ? super V, ? extends R> mapper);

除了可以使用户从条目映射到其他功能的功能外,他(她)还可以从键值对映射到其他功能。 当然,这很方便,但是由于我们正在使用值对,因此我们还可以添加更多特定的映射操作。

<R> MapStream<R, V> mapKey(BiFunction<? super K, ? super V, ? extends R> mapper);<R> MapStream<K, R> mapValue(BiFunction<? super K, ? super V, ? extends R> mapper);

看起来差别不大,但是使用API​​时,差别显而易见:

// With MapsStream
final Map<String, List<Long>> map = ...;
MapStream.of(map).mapKey((k, v) -> k + " (" + v.size() + ")").flatMapValue((k, v) -> v.stream()).map((k, v) -> k + " >> " + v).collect(System.out::println);// Without MapStream
final Map<String, List<Long>> map = ...;
map.entrySet().stream().map(e -> new AbstractMap.SimpleEntry<>(e.getKey() + " (" + e.getValue().size() + ")"),e.getValue())).flatMap(e -> e.getValue().stream().map(v -> new AbstractMap.SimpleEntry<>(e.getKey(), v))).map(e -> e.getKey() + " >> " + e.getValue()).collect(System.out::println);
  • 可以在此处找到 MapStream的完整实现。 如果您对更酷的东西感兴趣,请查看Speedment Github页面 。 玩得开心!

翻译自: https://www.javacodegeeks.com/2016/02/streaming-maps-java-8.html

java流式传输对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle11g支持xp吗_拔掉U盘前一定需要安全弹出吗?

相信每一个使用过U盘的人&#xff0c;都经历过不安全弹出USB设备就直接拔掉&#xff0c;然后被电脑无情提示没有正确弹出USB设备的状况。拔掉U盘前点击安全弹出&#xff0c;已经成了一种默认的操作。那么&#xff0c;问题来了&#xff0c;拔掉U盘前真的需要安全弹出吗&#xff…

java中使用kotlin_在Kotlin中使用libGDX

java中使用kotlin最近&#xff0c;我一直在阅读有关不同语言的信息&#xff0c;以及它们可以为已经拥挤的软件开发人员带来什么&#xff0c;并且一种语言对我来说很突出&#xff1a;Kotlin。 &#xff08; https://kotlinlang.org/ &#xff09; 这是一种相对较新的语言&#…

同时防服务器维修,加强服务器日常运维,避免宕机灾难发生

原标题&#xff1a;加强服务器日常运维&#xff0c;避免宕机灾难发生服务器作为我们日常网络的支撑&#xff0c;可以说是24小时的全天候运转。在这种无休止的“加班”的状态下&#xff0c;服务器必然容易出问题&#xff0c;一旦发生服务器宕机就会造成整个网络的瘫痪&#xff0…

basemap安装_【我是解决安装问题系列_1】Mac python basemap安装

「2020/3/21更新」 附basemap网盘下载地址⏬Python需要跳过的安装的坑太太太太多了!!!!!最近看《利用python进行数据分析》这本书&#xff0c;到可视化的部分&#xff0c;看着最后的例子地图挺酷炫的&#xff0c;跟着敲代码的过程中&#xff0c;发现有时候不是你不会写&#xf…

nfs服务器远程访问,NFS远程共享存储

原标题&#xff1a;NFS远程共享存储构建储NFS远程共享存因为NFS有很多功能&#xff0c;不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息&#xff0c;这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。那RPC和NFS之间又是如何之间相互通…

ntp服务器查看终端,使用命令行界面使用NTP服务器在Windows中同步时间 | MOS86

即使使用简单的3V锂电池(CR2032)关闭电脑&#xff0c;每台台式电脑也能保持正确的时间。但这不是一个可充电电池&#xff0c;所以一年左右就停止工作了。您可以轻松地替换此单元格&#xff0c;但更换单元后&#xff0c;必须使用NTP服务器更新时间&#xff0c;以便Windows PC保持…

concat合并的数组会有顺序么_JS 数组操作 记录 笔记

Array数组的方法Mutator方法————"突变方法"会改变数组自身的值&#xff1b;Accessor方法————"访问方法"不会改变数组自身的值&#xff1b;Iteration方法————"遍历的方法" Establish方法————"创建新方法"Mutator方法(会…

服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的

我们都知道SSL认证能够分成SSL双向认证和SSL单向认证。那么&#xff0c;什么是SSL双向认证&#xff1f;SSL双向认证过程又是怎样的&#xff1f;小编就在接下来的内容为各位详细讲述。什么叫SSL双向认证SSL双向认证则是需要是服务端需要客户端提供身份认证&#xff0c;只能是服务…

依赖: ros-melodic-desktop 但是它将不会被安装_npm系列之依赖管理

1. 版本控制npm依赖包使用语义化的版本号&#xff0c;让开发者可以从版本号中推测修改。版本号格式为&#xff1a;X.Y.ZX&#xff1a;代表主版本号&#xff0c;只有更新了不向下兼容的API时才需要修改Y&#xff1a;次版本号&#xff0c;当模块增加了向下兼容的功能时需要修改Z&…

怎么修改ipv4服务器,如何修改ipv4 wins 服务器地址

如何修改ipv4 wins 服务器地址 内容精选换一换IPv6的使用&#xff0c;可以有效弥补IPv4网络地址资源有限的问题。如果当前云服务器使用IPv4&#xff0c;那么启用IPv6后&#xff0c;云服务器可在双栈模式下运行&#xff0c;即云服务器可以拥有两个不同版本的IP地址&#xff1a;I…

python 追加到字典_使用Python读取,写入和解析JSON

JSON是用于数据交换的轻量级数据格式&#xff0c;可以很容易地被人类读取和写入&#xff0c;也可以由机器轻松解析和生成。它是一种完全独立于语言的文本格式。为了处理JSON数据&#xff0c;Python有一个名为的内置包json。示例&#xff1a; s {“ id”&#xff1a;01&#xff…

couchbase_适用于具有Couchbase和WildFly的多容器和多主机应用程序的Docker Machine,Swarm和Compose...

couchbase该博客将说明如何使用Docker创建部署在多个主机上的多容器应用程序。 这将使用Docker Machine&#xff0c;Swarm和Compose实现。 是的&#xff0c;这三个工具一起使这个博客变得更加有趣&#xff01; 该图说明了关键组件&#xff1a; Docker Machine用于配置多个D…

云服务器可以文件服务器,云服务器 可以上传文件

云服务器 可以上传文件 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。本地磁盘映射(推荐使…

机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...

[ 写在前面 ]自智云社区开辟IoT开源项目专区以来&#xff0c;一直有IoT开发者在贡献案例。玛莉甄选了一些具有代表性的案例分享给IoT爱好者们&#xff0c;本文亦如此。若你有好的案例&#xff0c;想和IoT爱好者们分享&#xff0c;欢迎投稿&#xff0c;一经采纳&#xff0c;我们…

drools。drools_Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明

drools。drools在六月&#xff0c;我们在博客上发布了一个新的内部状态机&#xff0c;用于管理用户&#xff0c;计时器和引擎线程之间的交互。 现在&#xff0c;我们对该代码进行了另一次大的内部清理&#xff0c;以使其更易于阅读和理解。 如前所述&#xff0c;所有操作&…

云服务器文件打包,云服务器文件打包

云服务器文件打包 内容精选换一换Winscp无法连接到服务器。SSH连接工具例如Xshell可以正常连接云服务器。其他SSH工具连接云服务器正常&#xff0c;但是Winscp无法连接到服务器。说明SSH服务是没有问题的&#xff0c;Winscp连接基于的是SFTP协议。查看/etc/ssh/sshd_config文件…

完全复制一个dict_Redis主从复制getshell技巧

Redis未授权漏洞常见的漏洞利用方式&#xff1a;Windows下&#xff0c;绝对路径写webshell 、写入启动项。Linux下&#xff0c;绝对路径写webshell 、公私钥认证获取root权限 、利用contrab计划任务反弹shell。基于Redis主从复制的机制&#xff0c;可以完美无损的将文件同步到…

pcl_openmap_OpenMap教程3 –使用MapHandler构建基本的地图应用程序–第2部分

pcl_openmap1.简介 在上一教程中&#xff0c;我们了解了MapHandler如何将各种组件连接在一起&#xff08;更具体地说&#xff0c;是从MapHandlerChild派生的类&#xff09;。 我们看到了如何以编程方式执行此操作&#xff0c;但是还有另一种声明性地使用openmap.properties 。 …

xy轴坐标图数字表示_【相机标定】四个坐标系之间的变换关系

点击上方“新机器视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达世界坐标系&#xff0c;相机坐标系&#xff0c;图像物理坐标系&#xff0c;像素坐标系之间的关系&#xff1a;首先看下几个坐标系在放在一块的样子&#xff1a;1&#xff…

设计模式的Java 8 Lambda表达式-策略设计模式

策略模式定义封装在通常称为Context的驱动程序类中的一系列算法&#xff0c;并使这些算法可互换。 它使算法易于互换&#xff0c;并提供了在特定时间选择适当算法的机制。 算法&#xff08;策略&#xff09;在运行时由客户端或上下文选择。 在与客户端交互期间&#xff0c;Con…