美文网首页
[Guava] 1 Joiner和Spliter

[Guava] 1 Joiner和Spliter

作者: LZhan | 来源:发表于2019-11-13 11:27 被阅读0次
1 概述

工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。

guava的优点:

  • 高效设计良好的API,被Google的开发者设计,实现和使用
  • 遵循高效的java语法实践
  • 使代码更刻度,简洁,简单
  • 节约时间,资源,提高生产力

Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:

  • 集合 [collections]
  • 缓存 [caching]
  • 原生类型支持 [primitives support]
  • 并发库 [concurrency libraries]
  • 通用注解 [common annotations]
  • 字符串处理 [string processing]
  • I/O 等等。
2 Joiner

<1> 将List中的元素按照自定义分隔符拼接成字符串

@Test
public void testJoinOn() {
    String result = Joiner.on(",").join(lists);
    logger.info(result);
    assertThat(result, equalTo("A,B,C,D"));
}

<2> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是排除null值

    @Test
    public void testJoinOnJoinWithNullValueButSkip(){
        String result=Joiner.on("#").skipNulls().join(stringListWithNullValue);
        assertThat(result,equalTo("Google#Guava#Java#Scala"));
    }

<3> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是将null值换成自定义的值

@Test
public void testJoinOnWithNullValueButUseDefaultValue() {
    String result = Joiner.on(",").useForNull("JAVA").join(listsWithNull);
    logger.info(result);
    assertThat(result, equalTo("A,B,C,JAVA"));
}

<4> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是将null值换成自定义的值,并append到StringBuilder里

@Test
public void testJoinOnAppendToStringBuilder() {
    StringBuilder result = Joiner.on(",").useForNull("JAVA").appendTo(new StringBuilder(), listsWithNull);
    logger.info(result.toString());
    assertThat(result.toString(), equalTo("A,B,C,JAVA"));
}

<5> 将Map中的key-value按照不同的分隔符分割成字符串

@Test
public void testJoinOnWithMap() {
    String result = Joiner.on("#").withKeyValueSeparator("=").join(stringMap);
    logger.info(result);
    assertThat(result, equalTo("key1=value1#key2=value2#key3=value3"));
}

总结:
Joiner的重要方法:
(1)静态方法 on(),传递分隔符作为参数,作为元素之间的分隔符;跟着调用join方法形成字符串;
(2)appendTo(A appendable, Iterable<?> parts),将某个迭代器拼接到appendable后面,必须由Joiner实例调用;
(3)skipNulls(),跳过迭代器中null,否则报空指针错误;
(4)useForNull(final String nullText),用某个字符串替代迭代器中为null的;
(5)withKeyValueSeparator(String keyValueSeparator),如果是Map类型,调用该方法作为key和value之间的分隔符

3 Splitter
@Test
public void testSplit() {
    String ans = "key1=123&key2=678&key3=what";

    Map<String, String> map =Splitter.on("&").withKeyValueSeparator("=").split(ans);
    System.out.println("split map: " + map);


    ans = "123&456&789&asdf";
    List<String> list = Splitter.on("&").splitToList(ans);
    System.out.println("split list: " + list);
}

输出:

split map: {key1=123, key2=678, key3=what}
split list: [123, 456, 789, asdf]

总结:
Splitter的重要方法:
(1)静态方法on(),传递参数表示以哪个作为分隔符,紧接着调用split(),形成迭代器类型(比如List类型);
(2)静态方法onPattern(String pattern),传递参数表示以哪个正则表达式串作为分隔符;
(3)静态方法fixedLength(final int length),按照固定长度进行拆分,最后一段可能比定长度短,但是不会为空;
(4)omitEmptyStrings(),从结果中自动忽略字符串;
(5)trimResults(),移除字符串的前导空白和尾部空白;
(6)withKeyValueSeparator(String separator),返回MapSplitter并且指定key,value之间的拆分字符串

相关文章

  • [Guava] 1 Joiner和Spliter

    1 概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会...

  • 002 Guava | Utilities

    本节介绍Guava的utilities中的工具包, Joiner Spliter Preconditions Ob...

  • Guava之Joiner和Spliter

    Joiner 做连接 Spliter 做分解

  • Guava | Joiner

    2017-03-27

  • Guava——Joiner

    将一个字符串序列用分隔符连接起来。 1.构造函数 只对外提供静态Joiner.on方法来构造joiner publ...

  • guava之Joiner

    Joiner相当于spliter的反操作,可以将数组或者集合等可遍历的数据转换成使用分隔符连接的字符串 Joine...

  • Guava-Joiner

    Joiner 只提供两个静态方法,参数是分隔符。静态方法内部new一个自身对象,返回该对象,之后可以通过该对象访问...

  • Guava学习

    Guava学习笔记之Joiner ,Strings,Splitter 工具实例 一.Strings 二,Joine...

  • java采坑之路-list不可修改的内部类

    在工作中字符串分割一直都离不开,习惯使用工具apache的StringUtils和guava的Spliter。但是...

  • 字符串处理之Splitter和Joiner

    在google guava包中提供了用于字符串连接(Joiner)和字符串分割(Splitter)的类 Joine...

网友评论

      本文标题:[Guava] 1 Joiner和Spliter

      本文链接:https://www.haomeiwen.com/subject/mnxhictx.html