忠告 | 小小对Java30岁程序猿的忠告,强烈推荐!

小小__

共 1766字,需浏览 4分钟

 ·

2020-12-10 12:22

64c256eac8598561a0c8153ac4220fe9.webp

Hello ! 我是小小,今天是本周的第四篇,本篇将会着重的让小小介绍一下对30岁Java程序猿的忠告,强烈推荐哦~

前言

Java程序猿都干到30了,还不会Google Guava,你out啦,快来跟着本文愉快的学习一下Goog Guava,快乐编程,快乐你我~

以面向对象思想处理字符串

JDK提供的String不好吗?也许不好不爽,那就行,让30岁的程序猿们愉快的使用guava进行操作。看看如下代码:0f573786523e16e3c8ba99dc17a08704.webp其中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还提供了字符串匹配器。CharMatcher0dc370cc536217abaed499e19be63cbf.webpCharMatcher,将字符的匹配和处理解耦,并提供丰富的方法供你使用!

对基本类型进行支持

273712adae52ce40f019f154993e9427.webpguava提供了Bytes/Shorts/Ints/Iongs/Floats/Doubles/Chars/Booleans这些基本数据类型的扩展支持,只有你想不到的,没有它没有的!

对JDK集合的有效补充

灰色地带 Multiset

JDK的集合,提供了有序且可以重复的List,无序且不可以重复的set,那这里其实对于集合涉及到了两个概念,一个order,一个dups,那么List Vs Set,and then some?f12761c1bfb016ddd61057029d1e2230.webp举个例子2743c36270380cfb5edeb132020c05f3.webpMultiset自带一个有用的功能,可以跟踪每个对象的数量。

Immutable vs unmodifiable

来先看一个例子:996e4c172e904a30707025d203efa300.webp

你看到JDK提供的unmodifiable的缺陷了吗?

实际上,Collections.unmodifiableXxx所返回的集合和源集合是同一个对象,只不过可以对集合做出改变的API都被override,会抛出UnsupportedOperationException。

也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god!

如何解决问题呢?例子在这~cfa974cfbce4bc497f91812facb3ebdc.webpOK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看:

guava提供了很多Immutable集合,比如ImmutableList/ImmutableSet/ImmutableSortedSet/ImmutableMap/......

看一个ImmutableMap的例子:

c98343ee98360ee62d813c685decea39.webp可不可以一对多:Multimap

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

可不可以双向:BiMap23ef79aa0a43013f9223ebd605484d25.webp可不可以多个KEY:Table3dcc19dae878ab2e90d249425e05db4e.webp函数式编程:Functionsefb815de21a08f8702bfc231b8e958c2.webp断言:Predicatebfbc1fc2c652f970faa33874c49d5b44.webp如何处理null?

10a07fca465a4316196b9d619684500f.webp快速失败~

如何处理缓存~

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

异步回调相当的简单5ac84aa6ccdab31bffbc160c75b5a3e0.webp更多a62f0fa24f43271de627a26b5549a87b.webp关于作者

我是小小。双鱼座的程序猿哦~我们下期再见~bye~



END




「 往期文章 」


装逼 | 无形装逼,最为致命!互联网黑话指南!

面试 | #面试面试面试 做#Java 就是要这种不要脸的…

抛弃 | 重磅!心好痛,她竟然抛弃我!



扫描二维码

获取更多精彩

小明菜市场



来源:网络(侵删)图片来源:网络(侵删)


d292e5844eb7f0ceaf6e499f4ee422c0.webp

点个在看你最好看



e1f9d87068fa63948461b8d88d9d7a86.webp



浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报