`
ajoo
  • 浏览: 452764 次
社区版块
存档分类
最新评论

瓜娃系列 (5) - 合久必分, 分久必合

阅读更多
用瓜娃以前, 每当遇到把一串东西用逗号分割打印出来的需求, 俺都有点烦. 这算是挺简单无聊的活, 但是每次写起来那代码总是觉得象56k猫拨号上网那么让人磨牙:

StringBuilder builder = new StringBuilder();
int first = true;
for (String s : strings) {
  if (first) {
    first = false;
  } else {
    builder.append(',');
  }
  builder.append(s);
}
String result = builder.build();


瓜娃的Joiner用起来就顺手顺气多了. 不多废话, 看代码:

String joined = Joiner.on(',').join(strings);


要是需要对null做特殊处理, 比如打印"NA":
String joined = Joiner.on(',').useForNull("NA").join(strings);


或者干脆把null滤掉:
String joined = Joiner.on(',').skipNulls().join(strings);


还有一些其它的定制功能, 自己看javadoc吧.

如果你所有的不是一个对象数组或者Iterable, 而是一个int[], Joiner不提供直接支持. 但是瓜娃有另外一个相当有用的包: com.google.common.primitives. 这里用到的是一个int数组, 所以咱们来看看Ints是否有啥能使的. 哈, 找到拉! (废话, 当然拉, 你事先就知道的嘛!)
String joined = Ints.join(",", intArray);

总之记住一句话, 当你跟原始类型打交道的时候, 看看primitives包里有没有你合适用的铲子, 铁锹什么的.


呵呵, 注意呀, 这里要扣题了(否则高考是要被扣分地), 所谓天下大势, 合久必分, 分久必合. 有Joiner, 就有Splitter.

要说JDK的String类已经有了split(), 但是 这个函数的设计有点那个, 嗯, 有个性. 你要是经常用它就会发现它经常会给你一些惊喜, 嗯, 东坡居士说: 败亦喜, 所以, 这里就是"失败"的意思, 是你会被String.split()华丽地打败的意思.

当然, 我们还可以用JDK的StringTokenizer, 如果你想炫耀你用java正确写老式循环不出错的技巧的话.

瓜娃的Splitter可以让我们用java 5的enhanced for loop, 而且一般你看着一个它像是做什么的, 它就是做的那个.
比如:

for (String word : Splitter.on(',').split("ajoo,so,handsome!")) {
  System.out.println(word);
}
// 打印出 ajoo so handsome!


对了, Splitter还支持正则表达式.

未完待续
8
0
分享到:
评论
1 楼 huang_yong 2010-11-25  
本文标题非常哲学!

相关推荐

    通达信指标公式源码软件分久必合,合久必分.doc

    标题中的“分久必合,合久必分”在这里并不是指历史哲学的概念,而是引用了这句话来形象地表达在技术分析中,趋势的演变规律——即市场趋势在长时间的上涨或下跌后,往往会反转,进入相反的方向。这个理念是技术分析...

    从数据库之分久必合,合久必分 看大数据的发展

    现在大数据话题火热,各种技术层出不穷,让人眼花缭乱,一时间,CTO/CIO们面临两大难题:数据需求的日益增长;以及数据技术的重大决策难度。数据库发展至今已经四十多年了,其中各种变迁,各种竞争不亚于三国演义,...

    专题资料(2021-2022年)产品营销:分久必合,合久必分!.doc

    专题资料

    传媒:私域流量深度研究-流量大势合久必分,用户思维日趋重要.zip

    传媒:私域流量深度研究-流量大势合久必分,用户思维日趋重要

    传媒:私域流量深度研究-流量大势合久必分,用户思维日趋重要.pdf

    随着数字媒体的发展与用户行为的转变,传媒行业正经历着一场深刻的变革。私域流量的兴起是这场变革中的一个重要现象。私域流量指的是企业或个人在社交媒体、微信、QQ、微博、Facebook等互联网平台,通过运营手段积累...

    王利明:《合久必分:侵权行为法与债法的关系》.docx

    "王利明:《合久必分:侵权行为法与债法的关系》" 王利明在《合久必分:侵权行为法与债法的关系》中探讨了侵权行为法与债法的关系问题。作者认为,侵权行为法应当从债法体系中分离出来而成为民法体系中独立的一支。...

    论文研究-分合粒子群优化算法.pdf

    基于社会系统中普遍存在“分久必合,合久必分”的现象,提出了基于分合思想的粒子群优化算法。分策略提高了演化群体的多样性,克服了粒子群优化算法局部收敛的缺陷。合策略吸取了不同群体的优良特性,提高了算法的...

    画心全世界失眠合久必婚钢琴曲谱双手数字简谱.pdf

    由于提供的文件内容是一段无法理解的文字串,这些文字串看起来是经过OCR(光学字符识别)扫描之后出现的识别错误,因此无法...如果需要讨论具体的曲谱“画心全世界失眠合久必婚”或者其他主题的信息,请提供相关内容。

    《煮酒论android》[原始人工作室 著] 2014年版

    天下大势,分久必合,合久必分。当今智能手机操作系统已度过了群雄割据的年代。塞班、黑莓、.Megoo,这些智能操作系统未能在移动互联网平台之战中生存下来,要么停止更新,要么被收购或等待收购。只余下安卓...

    HTML5给汉字加拼音收起展开组件的实现代码

    但话说天下大势合久必分,分久必合,如今(就在前几天,2018.5.29)它们又表示将会开发单一版本的 HTML 规范。 HTML5新增的标签和功能,常规的我相信大家都知道,这里就不啰嗦了,这里介绍两个大家可

    三国演义成语和歇后语.doc

    分久必合,合久必分:分久必合,合久必分是指人或事物变化无常,分合无定。出处:《三国演义》第一回:“话说天下大势,分久必合,合久必分。” 赔了夫人又折兵:赔了夫人又折兵是比喻想占廉价,反而受到双重损失。...

    分合粒子群优化算法.pdf

    【分合粒子群优化算法】是一种借鉴社会系统中“分久必合,合久必分”现象的优化算法,旨在解决传统粒子群优化算法(PSO)中的局部收敛问题,提高算法的全局搜索能力和多样性。该算法由陈建超、胡桂武等人提出,主要...

    详解云计算技术.docx

    云计算是IT界未来发展的必然趋势,所谓"天下大势,分久必合,合久必分",IT界亦然。 1946年2月15日,世界上第一台电脑ENIAC诞生,占地十几间屋子,计算机行业也随着这个庞然大物应运而生。之后IT界开始了第一次"分...

    SDN-bigswitch的BCF解决方案

    所谓天下合久必分,分久必合。网络世界也不能免俗。 锐捷网络也不落时代地加入这一潮流中。Cloud computing引发的互联网革命新浪潮将计算和存储中心化,SDN顺应了这一趋势。 通过硬件,软件平台的支持,信息(网络...

    关于个人辞职报告范文参考.doc

    - 引用一句与当前情境相关的名言或俗语,如“话说天下大势,分久必合,合久必分”。 2. **正文**: - 简要阐述辞职的原因,可以是个人发展、职业规划改变、家庭原因等,但要避免过于负面的措辞。 - 描述在公司的...

    数据处理救星降世Power Query

    ——拆(拆分)4/ 天下大势,合久必分,分久必合。——合(合并)5/ 隔空取物,犹如探囊取物——提(提取)6/ 百转千回后的峰回路转。——转(转换)7/ 它判断真假的唯一标准。——判(判断)8/ 人以群分,物以类聚...

    互联网私域流量行业研究报告精品报告2020.pdf

    #### 格局:天下大势,分久必合,合久必分 当前互联网私域流量行业的发展趋势呈现出一种历史循环的特点,即“分久必合,合久必分”。在用户量和使用时长方面,BATTK(百度、阿里巴巴、腾讯、今日头条、快手)占据了...

    汽车行业报告

    复盘这 110 多年的全球汽车产业发展史可以发现:“合久必分,分久必合”的 古老道理。美国、日本、欧洲先后成为全球汽车产业集中地,随之涌现以福特/通用为代 表的美系、丰田/本田为代表的日系、大众/奔驰/宝马为...

    战略管理:创新思维学讲义(ppt 46).pptx

    7. **创新的实践**:从理论到实践的过程中,遵循“分久必合,合久必分”的原则,体现与时俱进的发展规律。 通过理解和掌握这些知识点,管理者能够在企业战略中运用创新思维,促进企业的持续发展和竞争优势的建立。

    _高二语文2月月考试题无答案 试题.doc

    4. 语句出处:选项C“话说天下大势,合久必分,分久必合”出自《三国演义》,并非《红楼梦》。 5. 家庭关系:贾珠是贾宝玉的哥哥,贾环则是贾宝玉的弟弟。 6. 亲属关系:王夫人是黛玉的姑母,凤姐的姨母,宝钗的...

Global site tag (gtag.js) - Google Analytics