`
liujiekasini0312
  • 浏览: 147141 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

guava之Joiner 和 Splitter

 
阅读更多

最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享。本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理。

Joiner

首先我们来看看下面我们经常遇见的一个案例:

题目:
对于一个如下定义List

   List<String> list = new ArrayList<String>("1", "2", null, “3”);

按照’,’分割,并过滤掉null。

如果不用第三方库,如common-lange,Guava,用原生java,我们将怎么继续?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static String join(List stringList, String delimiter) {
    StringBuilder builder = new StringBuilder();
    for (Object item : stringList) {
        if (item != null) {
            builder
             .append(item)
             .append(delimiter);
         }
    }
   builder.setLength(builder.length() delimiter.length());
   return builder.toString();
}

是不是很简单,但是繁琐,而且这里还有个坑,我们使用append的方式,在每次for完成后,我们必须去修正remove最后的分隔符:builder.setLength(builder.length() delimiter.length());

Guava版本呢?

1
2
3
4
5
6
 public static String joinByGuava(List stringList, String delimiter) {
      return    Joiner
                 .on(delimiter)
                 .skipNulls()
                 .join(stringList);
  }

我们不在考虑更多的细节,并且很有语义的告诉代码的阅读者,用什么分隔符,需要过滤null值再join。

note:当然我们也可以用common-lange来很简单的完成:StringUtils.join(stringList, delimiter).但是个人推荐尽量使用Guava替代common-lange,因为Guava还有更多的有用方法,后续会陆续介绍,还有就是Guava的API相对更有语意一点。

Splitter

MapJoinner和MapSplitter

对于MapJoinner和MapSplitter的最好案例就是url的param编码。

MapJoinner

题目:
生产一个查询id: 123,name: green的学生信息的url。

利用Guava的MapJoinner的代码如下:

1
 Joiner.on("&").withKeyValueSeparator("=").join(ImmutableMap.of("id", "123", "name", "green"));

这里采用了on传入map item之间分隔符,以及withKeyValueSeparator传递map项key/value之间的分隔符。所以能够很简单的实现,不用我们在去实现一个的for循环代码。

MapSplitter

题目:
对url中的查询字符串"id=123&name=green"进行分割

利用Guava的MapSplitter的代码如下:

1
final Map<String, String> join = Splitter.on("&").withKeyValueSeparator("=").split("id=123&name=green");

这里同样利用on传入字符串的第一分隔符,withKeyValueSeparator传入项的分隔符,产生map的key/value项,其结果是一个{id=123, name=green}的Map对象

分享到:
评论

相关推荐

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...

    Guava 工程项目包 有实例

    - **Joiner 和 Splitter**:Guava 提供了 Joiner 和 Splitter 类,用于高效地连接字符串和分割字符串,比使用 "+" 或 String.split() 更加灵活和高效。 - **预格式化字符串**:Preconditions 类提供了一些静态方法...

    guava多个版本jar包

    此外,还有并发工具,如CountDownLatch、Future和ListenableFuture,以及强大的字符串处理类,如Joiner和Splitter。它还包含了Guava的缓存机制,允许高效地存储和检索数据。 2. guava-18.0.jar:这是一个较大的升级...

    guava-r07.zip

    字符串处理是Guava的另一个亮点,它提供了Joiner和Splitter工具类,简化了字符串连接和分割操作。此外,还有CharMatcher,用于匹配字符序列,以及Strings类,包含大量静态方法来处理和验证字符串。 Guava对原生类型...

    Google Guava 官方教程

    Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于高效地连接和拆分字符串。此外,Strings 类包含了许多静态方法,用于处理常见字符串操作。 6. **I/O 工具** Guava 的 Files 和 CharStreams 模块提供...

    guava-jdk5

    5. **字符串处理**:Guava提供了一系列的字符串处理工具,如Joiner、Splitter、CharMatcher等,使字符串操作更加方便和高效。例如,Joiner可以方便地将多个字符串连接成一个,Splitter可以按特定规则分割字符串。 6...

    guava-API文档

    4. 字符串处理:Guava包含了一些方便的字符串处理方法,如Joiner和Splitter,它们可以更方便地进行字符串的连接和分割操作。此外,CharMatcher类可以帮助进行字符过滤,Strings类则提供了各种字符串操作的静态方法。...

    guava-18.0资料

    5. **字符串处理**:Guava提供了Strings类,包含大量用于字符串操作的方法,如Joiner和Splitter,简化了字符串连接和分割的操作。 6. **I/O操作**:Guava的Files类提供了对文件系统的低级别访问,而CharStreams和...

    Guava入门指南培训PPT

    Guava是Google推出的一款开源核心类库,它为Java开发者提供了丰富的工具类和实用工具集合。Guava旨在提高编程效率的同时确保代码的高质量和稳定性。它包含了大量针对日常开发过程中常见问题的解决方案。 **特点**:...

    guava 23.0

    5. **字符串处理**:Guava提供了丰富的字符串工具,如Joiner、Splitter和Escapers,可以方便地进行字符串拼接、分割和转义操作。 6. **I/O工具**:Guava提供了Files、ByteStreams、CharStreams等类,对文件操作和流...

    Guava使用培训教程

    通过上述介绍可以看出,Guava库为Java开发提供了强大的工具支持,尤其是在字符串处理方面,如 `Joiner`、`Splitter` 和 `CharMatcher` 等工具类,它们不仅能提升代码的可读性和维护性,还能有效提高程序的运行效率。...

    guava-18.0.jar

    同时,Guava的Strings类提供了一系列字符串处理方法,如Joiner和Splitter,使得字符串操作更为便捷。 总的来说,Guava库通过其丰富的功能和强大的工具,极大地提高了Java开发的效率和代码质量。在解决RocketMQ过滤...

    guavapdf-ch_GoogleGuava官方教程_

    Guava提供了许多字符串处理的辅助方法,如Joiner和Splitter,它们分别用于连接字符串和分割字符串。Strings类包含了一些实用的静态方法,如isNullOrEmpty、commonPrefix等,可以更方便地处理字符串。 **实用方法** ...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    - **字符串处理**: 提供了更多处理字符串的方法,如`Joiner`和`Splitter`,便于进行复杂的字符串操作。 - **错误处理**: 引入了`Optional`类,帮助开发者更好地处理null值问题,减少空指针异常的发生。 总的来说,...

    guava23.0,用于安卓软件开发

    此外,它还包含了一些便捷的集合操作方法,如Joiner和Splitter用于字符串处理,以及Immutable集合类,确保集合在创建后无法被修改,这对于线程安全和防止意外修改非常有用。 2. **缓存机制**:Guava的Cache模块允许...

    google开源项目guava.jar包

    另外,Splitter和Joiner类则帮助我们更灵活地处理字符串分割与连接。 I/O操作在Guava中通过Files、ByteStreams、CharStreams等类得到优化,它们提供了更高效、简洁的接口来读写文件、处理流。例如,Files类允许直接...

    Guava是个风火轮之基础工具(1)Java开发Java经

    通过阅读"Guava是个风火轮之基础工具(1)Java开发Java经验技巧共7页.pdf.zip"这个压缩包内的文档,相信你能深入理解Guava的强大之处,并将其应用到自己的项目中,提升代码质量和开发效率。同时,"赚钱项目"这个子文件...

    谷歌guava的jar包和源码,值得收藏

    Guava的核心API包含很多通用的实用工具,如Joiner、Splitter、Charsets、Cache等,这些工具覆盖了日常编程中的各种需求。 通过导入Guava的jar包和源码,开发者可以在Eclipse等IDE中直接查看和学习源代码,加深对...

    Getting Started with Google Guava code

    5. **字符串处理**:Guava 提供了各种字符串工具,如 Joiner、Splitter 和 CharMatcher,可以更方便地进行字符串操作。 6. **I/O 操作**:Guava 提供了 Files、ByteStreams 和 CharStreams 等类,使得文件读写和流...

    guava-18.0

    4. **字符串处理**:Guava提供了诸如Joiner、Splitter等工具类,简化了字符串的拼接和分割操作,提高了效率。 5. **I/O操作**:Guava的IO包提供了对文件、流和ByteSource/ByteSink的高级抽象,使I/O操作更加灵活和...

Global site tag (gtag.js) - Google Analytics