前沿追踪|Java 程序员使用 Google Guava 编程?,为什么推荐
前言
目前GoogleGuava在实际应用中非常广泛 , 本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家分享!学习使用GoogleGuava可以让你快乐编程 , 写出优雅的Java代码 , 在业务允许的条件下 , 我推荐使用Guava编程!
Joiner/Splitter/CharMatcher
JDK提供的String还不够好么?
也许还不够友好 , 至少让我们用起来还不够爽 , 还得操心!
举个栗子 , 比如String提供的split方法 , 我们得关心空字符串吧 , 还得考虑返回的结果中存在null元素吧 , 只提供了前后trim的方法(如果我想对中间元素进行trim呢) 。
那么 , 看下面的代码示例 , guava让你不必在操心这些:
对于Joiner , 常用的方法是跳过NULL元素:skipNulls()/对于NULL元素使用其他替代:useForNull(String)
对于Splitter , 常用的方法是:trimResults()/omitEmptyStrings() 。 注意拆分的方式 , 有字符串 , 还有正则 , 还有固定长度分割(太贴心了!)
其实除了Joiner/Splitter外 , guava还提供了字符串匹配器:CharMatcher
guava对JDK提供的原生类型操作进行了扩展 , 使得功能更加强大
灰色地带:Multiset
JDK的集合 , 提供了有序且可以重复的List , 无序且不可以重复的Set 。 那这里其实对于集合涉及到了2个概念 , 一个order , 一个dups 。 那么ListvsSet , andthensome?
来看一个Multiset的示例:
来我们先看一个unmodifiable的例子:
也即是说我们改变源集合 , 导致不可变视图(unmodifiableView)也会发生变化 , ohmygod!
当然 , 在不使用guava的情况下 , 我们是怎么避免上面的问题的呢?
guava提供了很多Immutable集合 , 比如ImmutableList/ImmutableSet/ImmutableSortedSet/ImmutableMap/......
看一个ImmutableMap的例子:
来看guava如何替你解决这个大麻烦的:
Multimap的实现类有:ArrayListMultimap/HashMultimap/LinkedHashMultimap/TreeMultimap/ImmutableMultimap/......
可不可以双向:BiMap
JDK提供的MAP让我们可以findvaluebykey , 那么能不能通过findkeybyvalue呢 , 能不能KEY和VALUE都是唯一的呢 。 这是一个双向的概念 , 即forward+backward 。
在实际场景中有这样的需求吗?比如通过用户ID找到mail , 也需要通过mail找回用户名 。 没有guava的时候 , 我们需要createforwardmapANDcreatebackwardmap , andnowjustletguavadothatforyou.
因此 , biMap.inverse()!=biMap;biMap.inverse().inverse()==biMap
可不可以多个KEY:Table
我们知道数据库除了主键外 , 还提供了复合索引 , 而且实际中这样的多级关系查找也是比较多的 , 当然我们可以利用嵌套的Map来实现:Map> 。 为了让我们的代码看起来不那么丑陋 , guava为我们提供了Table 。
推荐阅读
- Java|计算机专业的本科生,该选择学习Java技术体系还是.NET技术体系
- 小熊回收站|-链表阻塞队列和数组阻塞队列的异同,Java并发编程
- 国际前沿观察|省下上万亿元,一举打破美国垄断,84岁老太不退休造“中国芯”
- Java|马化腾登顶中国首富,微信、QQ却都免费使用,腾讯到底咋赚钱的?
- Java|为什么美团骑手总是闯红灯昵
- 前沿追踪|限时免费下载,即将收费!10款价值175元的iOS宝藏App
- 阿里巴巴|java三大集合遍历方法
- 编程|JAVA基础-网络编程
- Java|Java中的天使和魔鬼:Unsafe类
- Java|面试官:连多线程问题你都一问三不知,还要我怎么“放水”?