火狐谷歌360 收藏夹共享

Google的Collections库的任务是提供一组具有稳定API的新Collection类型和实现,就像JDK一样。 它的开发主要考虑了Google的需求以及强烈遵守Java Collection Framework合同的概念。

该项目始于2007年,谷歌花了相当长的时间才将其发布到了几周前的最终版本中[3]。 尽管Google不能在最终版本发布之前就承诺提供稳定的API,但即使在早期版本中,Google Collections也获得了很大的吸引力。

获取示例代码

您可以从github [4]下载预先打包的基于maven的项目中显示的所有代码示例。 它使用最新的Google Collections版本,在撰写本文时为1.0。 JUnit TestCase中提供了此处介绍的所有内容,您可以使用Maven或您最喜欢的IDE来运行它。

实用程序类

Google Collections提供了一堆非常有用的实用程序类和方法,可以节省大量的样板代码。 第一个示例展示了如何使用Java的Collections Framework的传统方法实例化通用Map

Google Collections的实用程序类与静态导入相结合,使事情变得容易得多:

请注意,您不会收到有关未经检查的分配的任何编译器警告。 Google确保其库具有良好的泛型和类型安全性。 这些实用程序类及其工厂方法也可用于java.util.ListMap

编写单元测试时,一种常见的模式是实例化一个List并向其中添加一些固定装置,稍后将在测试中使用它们确定正确的结果。 让我们看一个例子:

Google收藏夹提供了一种简洁的列表类型,可以更加轻松地实例化您的固定装置,使其固定不变,从而在声明数据时确保正确的结果:

ImmutableList及其同级对象ImmutableMapImmutableSet不仅提供Collection的视图,这是使用Collections.unmodifieableList()时获得的视图,而且是一个真正的不可变的Collection ,它将永远不会改变。

增强的馆藏类型

Google Collections库提供了一组增强的Collections类型和实现。 在不可变类型旁边,还有另一个有趣的类别-Multimap类型。 Multimap实现允许重复的键值对。 使用Java Collections Framework的传统方法来实现这种行为是非常棘手的:

使用Google Collections的Multimap实施将一个键关联多个值很容易。 它还允许您检索特定键的所有值,并将其转换回传统的java.util.Map

这种类型的Collection可能有用的一个常见问题是,将信息与创建包装类不合理的特定类型相关联。 一个示例可以是关联有关用户的各种信息以将其显示在网站上。

如果您想知道的话,这种Multimap还有一个不可改变的对应对象。 尽管名称表示使用类似地图的数据结构,但也有Multimap类型的ListSet实现。

功能性物品

Google Collections库附带了一些好东西,类似于一种实用的方法。 例如,如果您熟悉Groovy,那么以下代码对您来说应该是日常工作。 有一些类用于定义函数,而实用程序类则可以使用这些函数来转换传统或Google的收藏集。 让我们看一个例子:

Google集合的实用工具类Lists提供了一种称为transform的方法,该方法可让您传入List和Function实现,以返回List的转换视图。 这里的一切也都泛化了。 函数定义了期望的类型以及将要返回的类型。 函数的返回类型产生转换后的列表的类型。

使用实用程序类Ordering,您甚至可以订购转换结果。 实用程序类Maps也提供了transform方法。 不幸的是,没有等效的集合。

Iterables是另一个非常整洁的Google Collections实用程序类,它为List和Set实现提供了一些类似于功能的方法:

使用Iterables,您可以提供简单的类型安全的搜索功能。 此外,还有一种方法可让您根据谓词过滤ListSet

terables有更多类似于功能方法的实用方法。 它使您可以组合两个或多个Iterable,并提供用于对Iterable进行分区或删除元素的方法

摘要

Google收藏库为开发人员每天面临的许多问题提供了实用的解决方案。 这些解决方案经过大量开发人员的精心设计,测试和批准。 由于Google使用该库作为其内部代码库,因此他们不太可能放弃对该库的支持。 在最终版本中,该版本带来了稳定的API,因此Google Collections可以用于任务关键型应用程序。

翻译自: https://jaxenter.com/tutorial-coding-with-google-collections-100157.html

火狐谷歌360 收藏夹共享

火狐谷歌360 收藏夹共享_教程:使用Google收藏夹编码相关推荐

  1. svn取消文件夹图标_如何去掉svn文件夹上面的符号

    如何去掉svn文件夹上面的符号 如何去掉svn文件夹上面的符号 第一步:建立一个名字叫做remove-svn-folders.reg的文本(先建立txt文件,然后粘贴内容后再修改文件名字),记得后缀要 ...

  2. 谷歌账号电子邮件怎么改_如何使用Google仅搜索您的电子邮件,事件和其他内容...

    谷歌账号电子邮件怎么改 You probably use Google search to find out everything from movie showtimes to how tall J ...

  3. 谷歌maps菜单语言设置_如何在Google Maps中测量跑步,骑自行车和徒步旅行的距离...

    谷歌maps菜单语言设置 Getting directions in Google Maps lets you easily see how far away the destination is. ...

  4. 谷歌日历一键删除日程_如何在Google日历中删除新的提醒

    谷歌日历一键删除日程 In December 2015, Google added reminders to the Google Calendar app for Android and iOS u ...

  5. 谷歌云端硬盘下载文件_如何为Google云端硬盘上的文件创建共享下载链接

    谷歌云端硬盘下载文件 Google Drive is great-you can access your files from anywhere, on pretty much any device, ...

  6. 浏览器兼容性总结: IE 火狐 谷歌 360 搜狗

    360的是用IE的内核,如果你的机子IE是什么版本,360也是一样.所以,360可以不用测试! 1.在同一个文件里针对不同的浏览器写她们各自调用的样式 针对属性:比如容器的height属性 IE6 专 ...

  7. 谷歌云端硬盘下载文件_如何更改Google云端硬盘中文件的所有者

    谷歌云端硬盘下载文件 By default, you're the owner of any file you upload or create on Google Drive. However, i ...

  8. 谷歌云端硬盘下载文件_如何使用Google云端硬盘中的Microsoft Office文件

    谷歌云端硬盘下载文件 Microsoft Office files are still very common, but if you're more of a Google Docs, Sheets ...

  9. python打开文件夹对话框_文件对话框打开文件夹中的文件(tkinter)

    我想把它实现到我自己的代码中,但是当我运行这个(没有我的代码,只有你看到的代码)时,所有显示的文件夹都是空的,我实际上不能打开任何东西.在from tkinter import * from tkin ...

  10. 谷歌云使用账号密码_如何使用Google密码检查

    谷歌云使用账号密码 Google has a tool designed to securely analyze your passwords against a database of ones t ...

最新文章

  1. WebService 基础
  2. OSI网络七层模型简明教程
  3. 在Apache上配置防盗链功能和隐藏版本号
  4. java 多态 降低耦合_java多态
  5. php冒泡排序和快速排序笔记
  6. php return直接输出,PHP中return用法详细解读
  7. Transformer太深不行?NUS字节发现注意力坍缩,提出重注意机制!
  8. Git版本控制的原理
  9. python的统计库_Python-Scipy库-卡方分布统计量计算
  10. 88个塑胶模具设计中常用知识点!
  11. MyEclipse里自制JSP模板
  12. mac切换网卡|IP
  13. 如何破解私域留存?四大核心环节拆解锁客关键能力
  14. 信息安全等级保护分为几个级别呢?
  15. php网页设计导航栏代码,CSS导航栏及弹窗示例代码
  16. 微信小程序-点击按钮退出小程序
  17. 使用Xtext/Xtend 实现域专用语言DSL(2)
  18. 克尼汉的c程序设计语言,c程序设计语言 英文版
  19. 奥西400服务器维修,奥西TDS400故障代码
  20. 谁需要,可以去微软注册@Live.com的邮箱

热门文章

  1. 企业遗产数据管理行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  2. PowerCLI批量创建VMware虚拟机
  3. 重装系统会不会丢失mysql表_重装系统文件会丢失吗|电脑重装系统会不会丢失文件...
  4. C#操作CAD-读取和修改数据
  5. 天眼使用指南--分析平台
  6. 微信小程序真的失败了吗?
  7. 21天战拖记——Day16:系统化,接着填“衣柜整理法”的坑(2014-05-19)
  8. mysql 学习 一
  9. JSON的几种拼接方式
  10. 基于红外光谱的汽油辛烷值预测——有监督学习神经网络的实现