b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c multimap 使用 Google Guava 美化你的 Java 代码:1(6)

电脑杂谈  发布时间:2018-02-01 20:07:32  来源:网络整理

我们想校验调用我们的方法的方法传参是否正确,如果错了,应该发出一个“他出错了”的警告信息。 JavaDoc中是这样解释的:

“Precondition异常通常表示被调用方法发生了一个错误。它告诉调用者不能用这种方式、这种参数或者其它来调用这个方法。Postcondition或其它运行失败是不会抛出这种类型的异常的。”

因此用Preconditions类或者静态导入,我们就可以用下面这行简单的代码来替代上面那些的冗长的代码了:

同样,该类里还有其它类似的方法来检验状态和空值。

相当简洁,不是么?

“请注意这里是相反的表达(译者注:应该指的是checkNotNull中有not的意思,所以是相反的); 你用Preconditions声明什么是你期望返回true的,就好像你在Java中运用断言,或者在JUnit中调用assertTrue方法一样。”

From the excellent blog series on Google Collections over at Public Object:

“Preconditions提供对方法状态的校验。它能使你输入的参数如你所期望的的那样足够简洁,与Java内建的断言不同的是Preconditions是一直开启的。”

下面是我在Integrasco上翻遍我所有的代码中,找到的一个比较好的例子:

用了Preconditions之后我们再来看看代码变得有多工整:

很简洁,不是么?

稍后我们会发表一篇关于异常和校验的更详细的文章,敬请关注!

我已经数不清我有多少次需要在一个Map中实现一个key对应多个value的需求,最终不得不以Map<K, List>这种结构来实现的经历了。 并且用这种方式实现一键多值的需求还存在很大的争议,如下所示:

别告诉你你从来没这样做过?利用Google Collections中的Multimap类我们可以轻松实现上述需求,而且感觉很时髦(我很开心我可以这样表达)

Whoop, whoop!

Google Collections提供了多种Multimaps的实现,如果你想防止出现键值对,可以用HashMultimap;如果你需要键值对按照自然顺序排列,你可以使用TreeMultimap;甚至你想按插入顺序来遍历集合,LinkedHashMultimap可以满足你的需求。

Multimaps同样提供了很多有用的方法,详细内容可以参考Multimap 和 Multimaps的API文档!很激动是么?那就继续往下看吧...

我管这节叫分片,相信很会觉得叫我们在之前文章叫提到的“过滤集合”更准确。但是当我们把把Multimap的概念和功能相结合的时候,你就会意识到他到底有多强大了,而不仅仅是过滤那么简单!

我们假设我们已经拥有了包含了一组map的list。list里的每一个Map代表拥有指定属性的一个文档。这个Map看起来可能会是下面这个样子:

即每个Map中我们拥有3个属性,他们分别是“type”、 “id”和“author”。

如上所示,所有我们的List看起来应该是下面这个样子:

现在,我们想把这个list根据所装载对象的类型不同分成多个list,比如一个叫“blog”,一个叫“news”等等...

如果没有Google Collections这将是一场恶梦!我们必须得先循环这个list,然后再分别检查每一个map中的key,然后再把根据类型的不同放入不同的list中。但如果我们不知道map里都有哪些类型,这个过程会更痛苦!

想不想和我一起来看看有没有轻松的办法解决?

用一点点Function的魔法加上Multimaps,我样可以以一种上相当优雅的方式来解决这个问题:

现在我们拥有了每一个key代表不同类型的Multimaps了!

如果现在我们想要指定类型的所有map,唯一需要做的就是找Multimaps要!

好,就到这里为止了!希望你喜欢这段旅程,同时也希望你能从Google这些真正伟大的项目中受到启发!

欢迎反馈!

Refer:

https://github.com/ecchanger/myblog/tree/master/posts

?scope=translate&q=Google+Collections

[1] Apache Commons:

简介:该工具类集合是由 apache 负责维护的,里面对多种常见的 java 操作做了封装,如 读写文件、发 email、jdbc 访问、文件上传、图像处理、字符串/集合/xml 的处理等,让你告别繁琐的 java 操作~

google Guava包的ListenableFuture解析

[2] Google Guava官方教程(中文版)

[3] Guava 是个风火轮之基础工具(3)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-64410-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 武元王乞伏乾归
      武元王乞伏乾归

      降息不会对股市产生任何作用

    热点图片
    拼命载入中...