忠告 | 小小对Java30岁程序猿的忠告,强烈推荐!
前言Hello ! 我是小小,今天是本周的第四篇,本篇将会着重的让小小介绍一下对30岁Java程序猿的忠告,强烈推荐哦~
Java程序猿都干到30了,还不会Google Guava,你out啦,快来跟着本文愉快的学习一下Goog Guava,快乐编程,快乐你我~
以面向对象思想处理字符串JDK提供的String不好吗?也许不好不爽,那就行,让30岁的程序猿们愉快的使用guava进行操作。看看如下代码:其中Joiner是连接器,Splitter是分割器,通常我们会吧他们定义为static final,利用on生成对象后应用到String进行处理,这是可以复用的。要知道apache commons StringUtils提供都是static method,更加重要的是,guava提供的joiner/splitter是经过充分测试的,他的稳定性和效率要比apache高出不少,这个可以测试一下哦~
发现没有我们想对String做什么操作,就是生成自己定制的Joiner/Splitter这是多么直接接的操作。对于Joiner,常用的方法跳过null元素,skipNulls()对于NULL元素使用其他替代,useForNull(String)
对于Splitter,常用的方法有,trimResults()/omitEmptyStrings()。注意拆分方式,有字符串哦!其实除了Joiner/Splitter以外,guava还提供了字符串匹配器。CharMatcher
CharMatcher,将字符的匹配和处理解耦,并提供丰富的方法供你使用!
guava提供了Bytes/Shorts/Ints/Iongs/Floats/Doubles/Chars/Booleans这些基本数据类型的扩展支持,只有你想不到的,没有它没有的!
灰色地带 Multiset
JDK的集合,提供了有序且可以重复的List,无序且不可以重复的set,那这里其实对于集合涉及到了两个概念,一个order,一个dups,那么List Vs Set,and then some?举个例子
Multiset自带一个有用的功能,可以跟踪每个对象的数量。
来先看一个例子:
你看到JDK提供的unmodifiable的缺陷了吗?
实际上,Collections.unmodifiableXxx所返回的集合和源集合是同一个对象,只不过可以对集合做出改变的API都被override,会抛出UnsupportedOperationException。
也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god!
如何解决问题呢?例子在这~OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看:
guava提供了很多Immutable集合,比如ImmutableList/ImmutableSet/ImmutableSortedSet/ImmutableMap/......
看一个ImmutableMap的例子:

JDK提供的MAP是一对一的,可不可以一对多呢?这样来看。guava是如何解决的




快速失败~
首先,这是一个本地缓存,guava提供的cache是一个简洁、高效,易于维护的。为什么这么说呢?因为并没有一个单独的线程用于刷新 OR 清理cache,对于cache的操作,都是通过访问/读写带来的,也就是说在读写中完成缓存的刷新操作!


我是小小。双鱼座的程序猿哦~我们下期再见~bye~
END
「 往期文章 」
面试 | #面试面试面试 做#Java 就是要这种不要脸的…
扫描二维码
获取更多精彩
小明菜市场

点个在看你最好看
