Joiner

文章目录

  • Joiner
    • 1、背景
    • 2、说明
      • 依赖
    • 3、示例
      • 3.1 普通连接
      • 3.2 跳过空元素
      • 3.3 默认值替换空元素
      • 3.4 结果放入stringbuilder
      • 3.5 写入文件
      • 3.6 使用stream
      • 3.7 使用stream并替换默认值
      • 3.8 连接map
      • 3.9 连接map输出到stringbuilder
    • 4、延伸
    • 参考链接

1、背景

需要连接字符串集合中的所有元素,形成一个长字符串。

2、说明

依赖

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.2-jre</version>
</dependency>

3、示例

3.1 普通连接

private final List<String> stringList = Arrays.asList("Google", "Guava", "Java", "Test", "Kafka");
private final List<String> stringListWithNull = Arrays.asList("Google", "Guava", "Java", "Test", null, "Kafka"
);@Test
public void test1() {String result = Joiner.on("-").join(stringList);System.out.println(result);
}

输出

Google-Guava-Java-Test-Kafka

3.2 跳过空元素

String result = Joiner.on("-").skipNulls().join(stringListWithNull);

说明:若连接的集合包含空元素,而Joiner未指定跳过空元素,则执行会抛出异常

3.3 默认值替换空元素

String result = Joiner.on("-").useForNull("Default").join(stringListWithNull);System.out.println(result);

输出:

Google-Guava-Java-Test-Default-Kafka

3.4 结果放入stringbuilder

StringBuilder builder = new StringBuilder("src-");
StringBuilder result = Joiner.on("-").useForNull("Default").appendTo(builder, stringListWithNull);
System.out.println(builder);
System.out.println(result);

输出:

src-Google-Guava-Java-Test-Default-Kafka
src-Google-Guava-Java-Test-Default-Kafka

3.5 写入文件

try {FileWriter fileWriter = new FileWriter(new File("./joiner.txt"));Joiner.on("-").useForNull("Default").appendTo(fileWriter, stringListWithNull);fileWriter.flush();
} catch (IOException e) {e.printStackTrace();
}

3.6 使用stream

String result = stringListWithNull.stream().filter(item -> item != null && !item.isEmpty()).collect(Collectors.joining("-"));

3.7 使用stream并替换默认值

String result = stringListWithNull.stream().filter(item -> item != null && !item.isEmpty()).collect(Collectors.joining("-"));

3.8 连接map

Map<String, String> stringMap = of("Google", "Guava", "Java", "Kafka");
String result = Joiner.on(",").withKeyValueSeparator("-").join(stringMap);
System.out.println(result);

输出:

Google-Guava,Java-Kafka

3.9 连接map输出到stringbuilder

Map<String, String> stringMap = of("Google", "Guava", "Java", "Kafka");
StringBuilder builder = new StringBuilder("src:");
Joiner.on(",").withKeyValueSeparator("-").appendTo(builder,stringMap);
System.out.println(builder);

输出

src:Google-Guava,Java-Kafka

4、延伸

参考链接

Joiner

Guava学习笔记-Joiner相关推荐

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

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

  2. Guava学习笔记(转)

    Guava(瓜娃)学习笔记 Guava工程包含了若干被google的java项目广泛依赖的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitiv ...

  3. Google Guava学习笔记——基础工具类Joiner的使用

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

  4. Guava学习之Joiner

    本文是对 Guava 中 Joiner 的学习介绍.欢迎加入学习项目: LearningGuava. 使用示例 以下参考:官方文档. 开发过程中,用分隔符连接字符串序列可能是一个比较繁琐的过程,但本不 ...

  5. Guava学习笔记:缘起

    缘起 为什么要使用Guava呢?因为在几年前就是用过Guava的部分功能,当时有一个项目需要通过缓存来提升部分功能的性能,对本地应用缓存和分布式应用缓存进行了相关的调研,在调研本地应用缓存的时候,第一 ...

  6. Guava学习笔记:EventBus(转)

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现.对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和 ...

  7. Guava学习笔记:Google Guava 类库简介

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...

  8. Guava学习笔记 6. 字符串处理[Strings]

    非常有用的字符串工具,包括分割.连接.填充等操作 本文简单介绍了一下Guava的一些字符串工具 本文参考自: http://ifeve.com/google-guava-strings/ 并添加了一些 ...

  9. Guava学习笔记:Preconditions优雅的检验参数

    在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...

  10. Guava学习笔记:Ordering犀利的比较器

    2019独角兽企业重金招聘Python工程师标准>>> Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比 ...

最新文章

  1. python安装文件乱码_python输出到文件乱码如何解决
  2. TweenMax动画库学习(三)
  3. DataGridView新特色、常用操作
  4. Windows 如何通过命令启动和关闭 Tomcat
  5. 连续四年百度Android岗必问面试题!Android校招面试指南
  6. 开发大型高负载类网站应用的几个要点
  7. 10行代码搞定移动web端自定义tap事件
  8. ModBus通信协议的【Modbus RTU 协议使用汇总】
  9. 图的连通度问题的求法(转)
  10. sqlserver备份还原丢失dbo_sqlserver数据库的备份与恢复sql实现
  11. 计算机机房维护与管理,计算机机房的管理与维护.doc
  12. ES中------拼音搜索
  13. 批量爬取链家房源信息
  14. 纵横网络靶场社区 工控
  15. Micheal Jackson 离开了我们
  16. 未来两周目标计划---C++ and Disassembly(不积跬步无以至千里,不积小流无以成江海)
  17. 聚会活跃气氛小程序-喝酒神器
  18. CToolBar的使用总结(转)
  19. 联想电脑计算机无法正常启动怎么办,电脑蓝屏无法启动怎么办
  20. 根据城市查找编号,根据编号查找城市

热门文章

  1. 小米手机的专用计算机连接软件,小米手机怎么连接电脑?这些方法值得收藏!...
  2. 大数据平台监控界面和报表
  3. 计算机各种办公软件都很卡,电脑中打开office2016办公软件很卡的解决方法
  4. ceph 源代码分析 — peering 过程
  5. shenyu自定义插件
  6. phpexcel 导入数据 Invalid cell coordinate
  7. mysql stmt fetch,mysql_stmt_fetch 奇怪的问题..
  8. win7打开xp共享的计算机,高手教你如何让XP与Win7系统局域网共享
  9. 带你走进springboot
  10. 文件上传2-搭建uploads靶场