guava教程——Joiner、Splitter

guava是goog1e开源的一套针对java api的扩展工具包,里面包含很多非常实用的方法,在工作中可以提高我们的编码效率;

1.Joiner

将集合按指定字符拼接成字符串;

private final List<String> stringList = Arrays.asList(
        "tom","jack","bob");

private final List<String> stringListWithNullValue = Arrays.asList(
        "tom","jack","bob",null,"rose");

@Test
public void testJoin(){
    String join = Joiner.on("#").join(stringList);
    assertThat(join,equalTo("tom#jack#bob"));
}

// 跳过list中的null
@Test
public void testJoinOnJoinSkipNull(){
    String join = Joiner.on("#").skipNulls().join(stringListWithNullValue);
    assertThat(join,equalTo("tom#jack#bob#rose"));
}

// 替换null为指定字符
@Test
public void testJoinOnJoinUseForNull(){
    String join = Joiner.on("#").useForNull("NULL").join(stringListWithNullValue);
    assertThat(join,equalTo("tom#jack#bob#NULL#rose"));
}

// appendTo
@Test
public void testJoinOnJoinAppendTo(){
    final StringBuilder buffer = new StringBuilder("TEST");
    StringBuilder buffer_new = Joiner.on("#").appendTo(buffer, stringList);
    assertThat(buffer_new.toString(),equalTo("TESTtom#jack#bob"));
}

private final Map<String,String> stringMap = ImmutableMap.of("a","b","c","d");

/**
 * 对Map kv拆分
 */
@Test
public void testJoinOnWithMap(){
    assertThat(Joiner.on("#").withKeyValueSeparator("=").join(stringMap),equalTo("a=b#c=d"));
}

2.Splitter

Splitter主要是分隔字符串为List或Map

@Test
public void testSplitter(){
    List<String> stringList = Splitter.on("|").splitToList("hello|word");
    assertThat(stringList,notNullValue());
    assertThat(stringList.size(),equalTo(2));
}

@Test
public void testSplitter_OmitEmpty(){
    List<String> stringList = Splitter.on("|").omitEmptyStrings().splitToList("hello|word||||");
    assertThat(stringList,notNullValue());
    assertThat(stringList.size(),equalTo(2));
}

@Test
public void testSplitter_TrimResult(){
    List<String> stringList = Splitter.on("|").trimResults().omitEmptyStrings().splitToList(" hello | word||||");
    assertThat(stringList,notNullValue());
    assertThat(stringList.size(),equalTo(2));
}

@Test
public void testSplitter_FixLeng(){
    List<String> result = Splitter.fixedLength(4).splitToList("aaaabbbbccccdddd");
    assertThat(result,notNullValue());
    assertThat(result.size(),equalTo(4));
    assertThat(result.get(0),equalTo("aaaa"));
}

@Test
public void testSplitter_Limit(){
    List<String> result = Splitter.on("#").limit(3).splitToList("aaaa#bbbb#cccc#dddd");
    assertThat(result,notNullValue());
    assertThat(result.size(),equalTo(3));
    assertThat(result.get(2),equalTo("cccc#dddd"));
}

// 转Map
@Test
public void testSplitter_SplitToMap(){
    Map<String, String> split = Splitter.on("|").withKeyValueSeparator("=").split("a=b|c=d");
    assertThat(split,notNullValue());
    assertThat(split.size(),equalTo(2));
    assertThat(split.get("a"),equalTo("b"));
}

原文地址:https://blog.51cto.com/13733462/2485513

时间: 2024-09-29 10:40:45

guava教程——Joiner、Splitter的相关文章

guava之Joiner 和 Splitter(转)

最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享.本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理. Joiner 首先我们来看看下面我们经常遇见的一个案例: 题目: 对于一个如下定义List List<String> list = new ArrayList<String>("1", "2", null, “3”); 按照’,’分割,并过滤掉null. 如果不用第三方库,

guava之Joiner 和 Splitter

最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享.本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理. Joiner 首先我们来看看下面我们经常遇见的一个案例: 题目: 对于一个如下定义List List<String> list =of("1", "2", null, “3”); 按照’,’分割,并过滤掉null. 如果不用第三方库,如common-lange,Guava,用原生jav

guava(三)字符串处理 Joiner Splitter CharMatcher

一.Joiner 拼接字符串 1.join 拼接集合中的元素 System.out.println(Joiner.on(";").join(Ints.asList(1,2,3))); //1;2;3 2.skipNullls 过滤null Joiner joiner=Joiner.on(";").skipNulls(); System.out.println(joiner.join("1",null,"22")); //1;2

Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码

文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码 1.Google Collections一览 2.操作lists和maps 3.静态导入和Eclipse模板 4.Guava走马观花 2-深入探索 GOOGLE GUAVA 库 1.The Guava CharMatcher 2.Joiner and Splitter 3.W

Google Guava教程

Google Guava官方教程(中文版) 原文链接  译文链接 译者: 沈义扬,罗立树,何一昕,武祖  校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] .并发库 [concurrency libraries] .通用注解 [common annotations] .字符串处理 [string processing] .I/O

guava字符串工具 Splitter 主要功能是拆分字符串为集合 Map

public class SplitterTest { public static void main(String args[]){ //1.拆分字符串为List集合 String str="小小,妈妈,爸爸,爷爷,奶奶"; Splitter splitter =Splitter.on(","); List<String> list=splitter.splitToList(str); System.out.println(list); //输出:[小

[转]基本Guava工具

转自:http://www.cnblogs.com/renchunxiao/p/3661918.html?utm_source=tuicool 使用Joiner类 将任意字符串通过分隔符进行连接到一起是大多程序员经常做的事情.他们经常使用array,list,iterable并且循环变量将每一个临时变量添加到StringBuilder当中去,并且中间添加分隔符.这些笨重的处理方式如下: public String buildString(List<String> stringList, Str

Google Guava 库用法整理&lt;转&gt;

参考: http://codemunchies.com/2009/10/beautiful-code-with-google-collections-guava-and-static-imports-part-1/(2,3,4) http://blog.publicobject.com 更多用法参考http://ajoo.iteye.com/category/119082 附 guava中文api地址http://ifeve.com/google-guava/ 以前这么用: Java代码   M

选择guava更安全,更简洁

1.为什么使用guava? 主要针对jdk1.5,jdk1.6中的接口进行封装或者优化,为常用的服务提供更丰富的结构支持,提供更安全代码操作.关键词:更优化.更安全.更丰富 2.guava主要提供哪些方面的接口支持? I/O:主要针对jdk中的I/O异常可能会导致数据写失败问题,针对输入源Sources和输出地Sinks构建了更安全的读写及数据流关闭接口,主要包括:ByteSource/CharSource/ByteSink/CharSink/Closer,该机制有效的解决的数据流关闭异常可能会