类似于com.google.common.collect.Maps提供的这些静态工具方法,Lists和Sets也有:
还有更多! 自己去看看吧!
当你在写单元测试时,经常会构造一些测试数据,可能是list、map、set等,对于一些像我一样草率的人来说,测试代码中会经常看到类似下面的语句:
其实我也知道,这几行代码看起来很烂,我只是想用一些测试数据构造一个不可变的list而已,我希望能像下面这样写一行代码搞定这些。。如何办到?好吧,这很简单!
Map也一样
我现在慢慢的越来越喜欢这种简单而又有效的写代码的方式,我还想缩短一下上面的代码,但是由于ImmutableList和ImmutableMap都有of方法,不能使用静态导入。不过有一个变通的方法就是说在我们自己的集合工具中包装这些创建工厂方法,那么对于不可变的list和map我只需要简单的这么写就好:
或者
而且如果我想构造填充一个ArrayList(或者一个HashMap),我可以这样:
两种方式都可以,选择权在你手上,很明显,这种较之前面的方式更灵活优雅一些,你说呢? 除去可以使用方便干净的方式来创建并填充集合类,我们也提供了很多额外的工具方法,比如过滤,对set取交集和并集,排序等等一些更优雅的方法,我将会在第二部分中讲解它们。
在这之前,我想先告诉你我在写代码时,是如果借用Eclipse的Code模板功能更高效的使用集合类的。(我假设你了解在IDEA或者其他IDE中也存在类似的功能,你可以根据这部分叙述做出相应的扩展或变通)
作为一个Eclipse的用户,我非常喜欢快捷键(参照这篇介绍Eclipse快捷键的博文:MouseFeed and how you can easily learn Eclipse shortcuts)
OK,Ctrl+space是你们的好朋友!他也是代码自动补全的快捷键。(译者注:当然。在中国,由于这个快捷键和切换输入法冲突,一般都设置为了“Alt+/”作为代码补全的快捷键)
在Eclipse下你可以创建一个模板来绑定到一个自动补全的快捷关键字上,这也是魔力所在!
相对于键入Maps.newHashMap()来创建一个HashMap,或者干脆使用静态导入,就可以简单的键入newHashMap()来创建一个HashMap,我只是简单的敲入newH,按下ctrl+space,见证奇迹的时刻到了!
在Eclipse菜单栏选择Window -> Preferences,进入Java -> Editor -> Templates,点击“New”。Name处就是你想敲入的快捷关键字,我通常命名为我的方法名,比如在这里,就是“newHashMap”,加上你喜欢的描述,比如”Import static Maps.newHashMap“,并增加下面的内容:
以上就是创建快捷补全的全部步骤了,现在去为你常用到的所有方法添加模板吧!
最后,但并非不重要,我将向你展示一下如果使用Guava来处理本文开头留下来的两个问题:
1.从文件中按行读取内容
2.比较两个基本类型
3.把一个List转换为int数组
Guava为我们提供了对Core Java类库全面的扩展,我们可以使用com.google.common.primitices包下的Ints,Doubles,Floats,Shorts,Bytes以及Bools等工具类操作基本类型的数据;com.google.common.io包提供了操作streams,buffers以及files等等,而且并发包中提供了一些像Futures,Callables以及Executors等方便的工具类来减轻我们写并发代码的痛苦。除此之外,Guava提供了对Collections的增强,以及非常优雅的CharMatcher、Joiner以及Splitter类,这些类我将在下篇博文中提到。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-64410-2.html
明明是四个大帅哥
没人敢惹吧
台湾问题得到彻底解决的那一天