Guava 中有一些基础的工具类,如下所列:

  1,Joiner 类:根据给定的分隔符把字符串连接到一起。MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value。

  2,Splitter 类:与 Joiner 操作相反的类,是根据给定的分隔符,把一个字符串分隔成若个子字符串。

  3,CharMatcher,Strings 类:对字符串通用的操作,例如移除字符串的某一部分,字符串匹配等等操作。

  4,其他类:针对Object操作的方法,例如 toString 和 hashCode 方法等。

  使用 Joiner 类

  我们通常根据指定的分隔符来连接字符串是这样做的。

 1 public String buildString(List<String> stringList, String delimiter){
 2         StringBuilder builder = new StringBuilder();
 3         for (String s : stringList) {
 4              if(s != null){
 5                   builder.append(s).append(delimiter);
 6             }
 7         }
 8         builder.setLength(builder.length() – delimiter.length());
 9         return builder.toString();
10 }

  上面的代码注意的一点就是我们要移除字符串最后的一个分隔符。虽然不难,但是很无聊,下面用 Joiner 类来实现同样的功能:

    

Joiner.on("|").skipNulls().join(stringList); // 默认使用“|”作为分隔符

  是不是很简洁,如果你想替换为 null 的字符串,使用下面的方法:

Joiner.on("|").useForNull("no value").join(stringList);

  需要注意的是,Joiner 不仅可以操作字符串,还可以是数组,迭代器,可变参数。Joiner 类是不可变类,因此是线程安全的,它可以处理 static final 的变量,考虑到这一点,我们看下面的代码:

 Joiner stringJoiner = Joiner.on("|").skipNulls();//the useForNull() method returns a new instance of the Joiner!stringJoiner.useForNull("missing");stringJoiner.join("foo","bar",null);

  在上面的代码中,useForNull()方法没有起作用,null值还是被忽略了。

  Joiner 不仅可以返回string ,还有方法能够处理StringBuilder类:

StringBuilder stringBuilder = new StringBuilder();
Joiner joiner = Joiner.on("|").skipNulls();
//returns the StringBuilder instance with the values foo,bar,baz appeneded with "|" delimiters
joiner.appendTo(stringBuilder,"foo","bar","baz");

  只要是实现了 Appendble 接口的类都可以用 Joiner 来处理。

FileWriter fileWriter = new FileWriter(new File("path")):
List<Date> dateList = getDates();
Joiner joiner = Joiner.on("#").useForNulls(" ");
//returns the FileWriter instance with the values appended into it
joiner.appendTo(fileWriter,dateList);

  上面的例子中,我们传递了 FileWriter 实例 和 Data 对象给 Joiner,Joiner 将连接list中所有的数据给 FileWriter 实例并返回。

  如上所示,Joiner 是一个非常有用的类,很容易处理日常的一些任务。还有一个特殊的方法,它和 Joiner 的工作方式是一样,但是它连接的是根据指定的分隔符连接 Map 的 key 和 value。

mapJoiner = Joiner.on("#").withKeyValueSeparator("=");

  下面的单元测试类展示了如何连接 Map 的 key-value。

Map<String, String> testMap = Maps.newLinkedHashMap();testMap.put("Washington D.C", "Redskins");testMap.put("New York City", "Giants");testMap.put("Philadelphia", "Eagles");testMap.put("Dallas", "Cowboys");String returnedString = Joiner.on("#").withKeyValueSeparator("=").join(testMap);System.out.println(returnedString);

  运行结果:Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys

    

转载于:https://www.cnblogs.com/IcanFixIt/p/4499729.html

Google Guava学习笔记——基础工具类Joiner的使用相关推荐

  1. Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on

    Guava 中有一些基础的工具类,如下所列: 1,Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. 2,Spli ...

  2. 基础工具类Joiner的使用

    Guava 中有一些基础的工具类,如下所列: Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. Splitter ...

  3. Java学习笔记Day06 工具类及常用算法

    第六章 工具类及常用算法 文章目录 第六章 工具类及常用算法 Java语言基础类 Java基础类库 Object类 概述 toString方法 方法摘要 覆盖重写 equals方法 方法摘要 默认地址 ...

  4. 网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置

    事务就是保证多个操作在同一个connection,TxQueryRunner通过JdbcUtils获取连接,而JdbcUtils通过ThreadLocal<Connection>确保了不同 ...

  5. Guava学习笔记:简化异常处理的Throwables类

    Guava学习笔记:简化异常处理的Throwables类 参考文章: (1)Guava学习笔记:简化异常处理的Throwables类 (2)https://www.cnblogs.com/peida/ ...

  6. 借Google Guava学习发现和开发通用功能模块

    如何发现通用的功能模块? 很多人觉得做业务开发没有挑战,实际上,做业务开发也会涉及很多非业务功能的开发,比如我们前面讲到的 ID 生成器.性能计数器.EventBus.DI 容器,以及后面会讲到的限流 ...

  7. Spring Boot学习笔记-基础(2)

    Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...

  8. Google Map 开发笔记——基础篇(Javascript )

    Google Map 开发笔记--基础篇 说明: 一.使用入门: 1.在您需要显示地图的 html 页面嵌入这段 script 2.地图 DOM 元素 3.初始化地图 二.地图画点.线.面 1.标记( ...

  9. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

最新文章

  1. 【论文解读】百度提出新冠高风险小区预警算法,AAAI21收录!
  2. Maven+struts2+spring4+hibernate4的环境搭建
  3. Spring-Cloud中的 熔断、限流、降级
  4. http请求消息体和响应消息体
  5. java direct memory_第一讲  JVM内存四大类型:Heap,Stack,Contant,DirectMemory等
  6. 苹果6软件服务器验证失败是怎么回事,iPhone6手机出现验证错误怎么办?
  7. 前端ajax传递json格式参数,后端springboot接收
  8. 三年级能用计算机吗,三年级上册第6课:我用计算机写作文
  9. C语言——负数据强制类型转换注意事项
  10. 人间不值得。在既定的规则面前,除了遵守,还能有什么?
  11. 沉没成本谬误(一):你是如何被“套牢”的?(二):吃饱撑着也要把东西吃完
  12. scrapy框架之spider
  13. 17-【istio】-【流量管理】-【流量管理案例篇】针对TCP流量
  14. ADC相关参数之---INL和DNL
  15. 项目实训-中医药知识图谱5
  16. pba mode ( path based analysis for sta )
  17. 台式计算机选购,电脑什么配置好 教你如何选购一台好的台式电脑
  18. 群翔ShopNum1分销系统V8.1升级版,更优更全更盈利
  19. 客户端缓存(http缓存和本地缓存)
  20. 【机器学习课程-华盛顿大学】:4 聚类和检索 4.4 MoG混合高斯模型编程测试

热门文章

  1. 《Android开发从零开始》——10. LinearLayout学习
  2. mysql 存储过程中limit
  3. for循环和数组练习
  4. eclipse配置PHP自动提示代码
  5. 你可能从未听过的 Linux 发行版
  6. shell脚本中if的相关参数
  7. SQL SERVER 中identity
  8. C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】
  9. Windows下UltraEdit查看Objective-C代码高亮工具
  10. Davinci及U-boot的一些介绍