java代码之美(8)---guava字符串工具
guava字符串工具
在java开发过程中对字符串的处理是非常频繁的,google的guava工具对字符串的一些处理进行优化,使我们开发过程中让自己的代码看去更加美观,清爽。
一、Joiner
根据给定的分隔符把字符串连接到一起。MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value。
分析源码可知:该类构造方法被private修身,无法直接通过new实现,通过调用on传如分隔符来得到实例。
案例
public class JoinerTest {
    public static void main(String args[]){
     //1、将list字符串集合,以,形式转为字符串
        List<String> list =new ArrayList<String>();
        list.add("xx");
        list.add("zz");
        list.add("dd");
        //Joiner.on(",")获得Joiner实例对象
        Joiner joiner =  Joiner.on(",");
        //joiner.join(list)传入操作的集合,并转成字符串格式
        System.out.println(joiner.join(list));
        //输出结果:xx,zz,dd
     //2、将Iterator<T>列表,转为字符串
        Iterator<String> it=list.iterator();
        String  str=Joiner.on("|").join(it);
        System.out.println(str);
        //输出结果:xx|zz|dd
     //3、连接多个字符串
        String str1=Joiner.on(",").join("小小","爸爸","妈妈","爷爷","奶奶");
        System.out.println(str1);
        //输出:小小,爸爸,妈妈,爷爷,奶奶
     //4、连接字符串与列表
        StringBuilder builder=new StringBuilder("小小最乖");
        //返回StringBuilder类型
        StringBuilder str2=Joiner.on(",").appendTo(builder,list);
        System.out.println(str2);
        //输出:小小最乖xx,zz,dd
     //5、跳过null值连接
        list.add(null);
        list.add("小小");
        //skipNulls()代表去除null
        String str3=Joiner.on(",").skipNulls().join(list);
        System.out.println(str3);
        //输出:xx,zz,dd,小小
     //6、替换null值进行连接
        String str4=Joiner.on(",").useForNull("空").join(list);
        System.out.println(str4);
        //输出:xx,zz,dd,空,小小
     //7、Map的键值对打印出来
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
        System.out.println(mapJoiner.join(map));
        //输出:key1=value1,key2=value2,key3=value3     
//8、一步将字符串转为List<Long>集合(前面先转为list<String>,后面用java8特性将List<String>转为List<Long>)
List<Long> list=Splitter.on("#").splitToList("111#222#333").stream().mapToLong(str->Long.parseLong(str)).boxed().distinct().collect(Collectors.toList());
} }
Joiner在实际开发中,用处还是蛮大的。
二、Splitter
主要功能是拆分字符串为集合 Map等。 通过分析源码可知,该工具类是通过on函数传入拆分字符得到实例。
案例:
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);
        //输出:[小小, 妈妈, 爸爸, 爷爷, 奶奶]
     //2、忽略空字符
        String str1="a,b,c,d,,f,g";
        //omitEmptyStrings()代表去除空字符串
        List<String> list1=Splitter.on(",").omitEmptyStrings().splitToList(str1);
        System.out.println(list1);
        //输出:[a, b, c, d, f, g]
     //3、忽略空字符且去除字符串前后空格
        String str2="a,b,c,d,,f,  g  ";
        List<String> list2=Splitter.on(",").omitEmptyStrings().trimResults().splitToList(str2);
        System.out.println(list2);
        //输出:[a, b, c, d, f, g]
    }
}
三、Strings
案例
public class StringsTest {
    public static void main(String args[]){
     //1、补右全(Strings.padEnd方法)
        String a="12345";
        String b=Strings.padEnd(a, 10, 'x');
        System.out.println(b);
        //输出:12345xxxxx
     //2、补左全(Strings.padStart)
        String c=Strings.padStart(a, 10, 'x');
        System.out.println(c);
        //输出:xxxxx12345
     //3、校验空值和null
        String d="";
        String f=null;
        boolean e=Strings.isNullOrEmpty(d);
        boolean h=Strings.isNullOrEmpty(f);
        System.out.println(e);
        System.out.println(h);
        //输出:true,true
     //4、如果为null 转为""
        String m=null;
        String n=Strings.nullToEmpty(m);
        System.out.println(n);
        //输出:
     //5、如果为"" 转为null
        String j="";
        String k=Strings.emptyToNull(j);
        System.out.println(k);
        //输出:null
     //6、重复字符串(Strings.repeat)
        String o="123";
        String p=Strings.repeat(o, 3);
        System.out.println(p);
        //输出:123123123
     //7、获取a,b左公共部分字符串(左边第一个公共部分)
        String r="abcdsfsfs";
        String s="accdc3sfsd";
        String t=Strings.commonPrefix(r, s);
        System.out.println(t);
        //输出:a
    //8、获取a,b右公共部分字符串
        String w="faaxyz";
        String x="fwefxyz";
        String z=Strings.commonSuffix(w, x);
        System.out.println(z);
        //输出:xyz
    }
}
想太多,做太少,中间的落差就是烦恼。想没有烦恼,要么别想,要么多做。中校【17】
java代码之美(8)---guava字符串工具的更多相关文章
- java代码(8) ---guava字符串工具
		
guava字符串工具 一.Joiner 根据指定的分隔符把字符串连接在一起,MapJoiner执行相同的操作,但是针对Map的key和value 分析源码可知:该类构造方法被private修饰,无法直 ...
 - java代码之美(14)---Java8 函数式接口
		
Java8 函数式接口 之前写了有关JDK8的Lambda表达式:java代码之美(1)---Java8 Lambda 函数式接口可以理解就是为Lambda服务的,它们组合在一起可以让你的代码看去更加 ...
 - java代码之美(15)---Java8 Function、Consumer、Supplier
		
Java8 Function.Consumer.Supplier 有关JDK8新特性之前写了三篇博客: 1.java代码之美(1)---Java8 Lambda 2.java代码之美(2)---Jav ...
 - java代码之美(3)---guava 复写Object常用方法
		
guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方 ...
 - java代码之美(11)---java代码的优化
		
java代码的优化 随着自己做开发时间的增长,越来越理解雷布斯说的: 敲代码要像写诗一样美.也能理解有一次面试官问我你对代码有洁癖吗? 一段好的代码会让人看就像诗一样,也像一个干净房间会让人看去很舒服 ...
 - java代码(3)----guava复写Object常用方法
		
guava复写Object常用方法 Guava是一个Google的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,字符串处理,I/O和验证的实用方法, 这些高质量的 ...
 - java代码之美(12)---CollectionUtils工具类
		
java代码之美(12)---CollectionUtils工具类 这篇讲的CollectionUtils工具类是在apache下的, 而不是springframework下的CollectionUt ...
 - java代码之美(4)---guava之Immutable(不可变)集合
		
Immutable(不可变)集合 一.概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开.Collections是jdk提供的一个工具类 ...
 - java代码之美(9)---guava之Lists、Maps
		
guava之Lists.Maps 谷歌提供了guava包里面有很多的工具类,Lists和Maps集合工具,集合操作做了些优化提升. 1.概述 1.静态工厂方法 (1)Guava提供了能够推断范型的静态 ...
 
随机推荐
- react native 中实现个别页面禁止截屏
			
这里主要用到了原生模块,下面贴出FlagSecureModule.java的代码 package com.studyproj.flagsecure; import android.util.Log; ...
 - Linux中伪分布的搭建
			
一伪分布模式 特点:在单机上,模拟一个分布式的环境,具备Hadoop的所有功能 HDFS:NameNode + DataNode + S ...
 - TMS320DM642学习----第六篇(CCS中.dat文件类型详解)
			
1.如下为.dat文件中文件头的基本格式: MagicNumber Format StartingAddress PageNum Length [NewFormat] 下面是分别的解释: MagicN ...
 - jar文件内lib引用的jar插件修改后更新
			
打包的java服务在第三方jar进行修改后,要更新线上的jar包时,直接替换原有lib引用的jar文件,会造成服务起不来, 可在本地clean install之后,用线上的classes文件夹替换本地 ...
 - Android Studio之回退Gradle版本方法
			
Android Studio之回退Gradle版本方法 (Minimum supported Gradle version is 4.10.1. Current version is 4.6.) ...
 - Nginx status详解
			
1. 启用nginx status配置 server { listen *:80 default_server; server_name _; locatio ...
 - C# 串口操作系列(4) -- 协议篇,文本协议数据解析
			
C# 串口操作系列(4) -- 协议篇,文本协议数据解析 标签: c#uiobjectstringbyte 2010-06-09 01:50 19739人阅读 评论(26) 收藏 举报 分类: 通讯 ...
 - Dagger2 notes
			
Android:dagger2让你爱不释手-基础依赖注入框架篇 Android Dagger2 MVP架构 一看就明白 Dagger2教程六之Component的组织方法(原) Dagger 2从浅到 ...
 - lua 文件编译相关工具
			
-- 编译一个代码文件 -- loadfile (lua_State *L, const char *filename); -- 将一个文件加载为lua代码块,仅编译不执行,返回值为编译后的 -- 代 ...
 - Markdown常用快捷键
			
Markdown使用的符号:井号,星号,大于号,中括号,竖线,横杠,波浪线,反引号 # ,*, > ,[],|,-,~,` 井号 + 空格:根据空格的个数显示各标题的大小 标题一 标题二 标题三 ...