Guavate:桥接Guava和Java8的微型库

Java8很棒,并向JDK添加了一些有用的抽象,这些抽象通过Google出色的Guava commons库在Java社区中得到了普及。 小组讨论表明, 不久将有一个需要Java 8的Guava版本,从而弥合了Guava和Java8之间的鸿沟。 但是,直到这样的时候,我们其余使用Guava + Java8的人都需要一个很小的填充库来处理诸如Collector实现之类的东西,这些东西会产生Guava Immutable集合。

与往常一样, 斯蒂芬· 科尔本( Stephen Colebourne)恰好把这样一个很小的实用程序类放在一起 : 不幸的是,它被埋在Strata内部,对于我所有的项目,我都不想仅仅依靠Strata来达到这一小巧的目的。 另外,我本人也有一些Java8填充方法可以使用家。 因此, 我分叉了Colebourne的Guavate,并将其发布给Maven Central,供其他任何想要将此小巧的填充库添加到其Java8项目中的人使用:

<dependency><groupId>com.github.steveash.guavate</groupId><artifactId>guavate</artifactId><version>1.0.0</version>
</dependency>

每个不可变集合都有收集器实现:

List<String> inputs = Lists.newArrayList("a", "b", "c");
ImmutableSet<String> outputs = inputs.stream().map(String::toUpperCase).filter(it -> !it.startsWith("b")).collect(Guavate.toImmutableSet());
// outputs is an immutable set of "a" and "c"

还有一些方便的方法可以从Map.Entry(以及实现了Entry的Common-Lang3的Pair)中收集地图:

Map<String, Integer> inputs = ImmutableMap.of("bob", 1, "jon", 2, "mary", 3
);
Map<String,Integer> outputs = inputs.entrySet().stream().map(e -> Pair.of(e.getKey().toUpperCase(), e.getValue())).collect(Guavate.entriesToMap());
// outputs is a map of BOB:1, JON:2, MARY:3

将任意可迭代对象转换为流(首先应该在JDK中):

Iterable<String> values = // ...
Stream<String> streamVals = Guavate.stream(values);

并将Optional转换为零或一个元素的流:

Optional<String> maybe = // ...
Stream<String> stream = Guavate.stream(maybe);

检出GitHub项目页面以跟踪更新或提交带有您自己的Java8附加件的拉取请求:

  • https://github.com/steveash/guavate

翻译自: https://www.javacodegeeks.com/2016/07/guavate-tiny-library-bridging-guava-java8.html

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

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

相关文章

常见的几种异常类型-熟记

今天把几个常见的异常总结一下&#xff0c;希望自己能熟记&#xff0c;别忘记&#xff01;&#xff01;&#xff01; 1.NullPointerException: 空指针异常。经验发现这个异常是经常会发生的&#xff0c;属于运行时异常。 举例&#xff1a; public static void main(String[] ar…

linux不重启更新内核,编译并使用kpath不重启更新linux-kernel

yum install ncurses-devel -ytar -xvf linux-4.9.3.tar.xzcd linux-4.9.3/make menuconfigmake allmake modules_installmake installKpatch主要有四个组件。kpatch-build 产生hot patch。 通过对比包含patch和不包含patch的kernel差异&#xff0c;产生…

The type sun.management.ManagementFactory is not visible

Eclipse默认将这些受访问限制的API设成了Error。 解决方法&#xff1a; 只要将Windows---Preferences---Java--Complicer---Errors/Warings里面的Deprecated and restricted API中的Forbidden references(access rules) 选为Waring就可以编译过了 今天在JDK1.7中引入sun.manage…

简单选项卡

简单选项卡 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Document</title><style>#div1 {width: 350px;margin: 0 auto;}#div1 button{width: 100px; height: 30px; background-color: …

探索应用程序的指路明灯:Route 和 Router 入门指南(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux密码是一个回文,usermod命令和用户密码管理

3.4 usermod命令3.5 用户密码管理3.6 mkpasswd命令3.4 usermod命令在某些情况下需要改变现的用户的属性&#xff0c;改变用户的home目录、登录名、密码、登录shell&#xff0c;截止日期等&#xff0c;在这种情况下“usermod命令被使用。实例如下&#xff1a;#格式如下&#xff…

php cdi_配置CDI对话的超时

php cdi在开发JSF应用程序时&#xff0c;CDI对话范围是一个很好的功能。 想象一下&#xff0c;您有大型数据表&#xff0c;需要很长时间才能加载。 由于高内存消耗&#xff0c;您通常不希望将加载的数据放置在会话作用域的Bean中。 而且&#xff0c;您不能将加载的数据放在视图…

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuExc.jsp at line 163这两句话表示创建一个新的文件失败。所以可能是当前用户没有文件路径的访问权限&#xff0c;也有可能是文件路径错误等其他关于文件路径的问题

解决在html中引入font-awesome的css文件后, 图标显示不出来

今天小颖在做项目时&#xff0c;需要在html文件中引入font-awesome.min.css&#xff0c;但是引入后&#xff1a; 以前小颖在用font-awesome库里的图标时&#xff0c;都是直接从node中下包&#xff0c;然后在main.js中引入得即可&#xff0c;第一次直接在html中直接引入css文件&…

linux 提供多用户telnet,linux系统telnet命令怎么用

2016-10-24 回答telnet命令通常用来远程登录。telnet程序是基于telnet协议的远程登录客户端程序。telnet协议是tcp/ip协议族中的一员&#xff0c;是internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用…

Stackoverflow:您从未见过的7个最佳Java答案

您可以在Stackoverflow上找到哪些最有趣的答案&#xff1f; Stackoverflow是开发人员的金矿。 它可以帮助我们找到遇到的特定问题的最有用答案&#xff0c;并且我们总是从中学习新事物。 对于以下文章&#xff0c;我们研究了最流行的Java问题和答案&#xff0c;并决定重点介绍…

WORD中如何自动生成目录?

步骤&#xff1a; 1、输入当做标题的文字 2、将文字设置为标题样式 3、光标放在要添加目录的位置 4、选择插入->引用->索引和目录->目录->确定

C#控件之Repeater控件使用

歡迎大家來討論&#xff0c;修改&#xff0c;一定虛心接受。 1.為什麼使用Repeater控件&#xff1f; 關於把從數據庫讀取的數據綁定到前台頁面&#xff0c;我們可以使用DataGrid、DataGridView以及Repeater來佈局&#xff0c;三者均可以直接綁定DataTable中的字段&#xff0c;但…

linux驱动静态分配内存,Linux驱动设计——内存与IO访问

名词解释内存空间与IO空间内存空间是计算机系统里面非系统内存区域的地址空间&#xff0c;现在的通用X86体系提供32位地址&#xff0c;寻址4G字节的内存空间&#xff0c;但一般的计算机只安装256M字节或者更少的内存&#xff0c;剩下的高位内存就被用于PCI或者AGP及系统桥设备的…

Windows Socket 编程_ 简单的服务器/客户端程序

一。程序运行效果图二。程序源代码 三。程序设计相关基础知识 1.计算机网络 2.IP地址 3.协议 4.网络体系结构 5.TCP/IP体系结构与特点 6.客户机/服务器模式 7.TCP/IP特点 8.套接字的引入 9.面向 连接/无连接 的套接字的系统调用时序图/流程图 …

JDK / JRE zip

Server JRE与JRE的区别&#xff1a;Server JRE一般用于服务器上安装&#xff0c;只有64bit版本&#xff0c;不会安装浏览器插件、自动更新&#xff0c;有监视工具、没有Java Fx和其他开发工具&#xff1b;有安装程序&#xff0c;只是一压缩目录。Server JRE 8大约是完整JDK的40…

linux 磁盘挂载sde,linux lvm挂载新的硬盘并且扩容

PV(Physical Volume)- 物理卷物理卷在逻辑卷管理中处于最底层&#xff0c;它可以是实际物理硬盘上的分区&#xff0c;也可以是整个物理硬盘&#xff0c;也可以是raid设备。VG(Volumne Group)- 卷组卷组建立在物理卷之上&#xff0c;一个卷组中至少要包括一个物理卷&#xff0c;…

TDH-大数据基础

------------------------------------------------------------------------------------*******大数据概念和基础**********1.大数据的四个特点&#xff1a;数据规模大&#xff0c;生成、处理速度快&#xff0c;数据类型多样&#xff0c;价值巨大密度低&#xff1b;2.大数据历…

xshell十大技巧

xshell是我用过的最好用的ssh客户端工具&#xff0c;没有之一。这个软件完全免费&#xff0c;简单易用&#xff0c;可以满足通过ssh管理linux vps所有需要&#xff0c;唯一遗憾的是没有官方中文版。警告&#xff1a;不要下载所谓的汉化版&#xff0c;可能有木马。此前已有报道使…

深度linux 网络配置文件,solver及其配置 - Caffe 深度学习入门教程_Linux教程_Linux公社-Linux系统门户网站...

solver及其配置solver算是caffe的核心的核心&#xff0c;它协调着整个模型的运作。caffe程序运行必带的一个参数就是solver配置文件。运行代码一般为#caffe train --solver*_slover.prototxt在Deep Learning中&#xff0c;往往loss function是非凸的&#xff0c;没有解析解&…