zoukankan      html  css  js  c++  java
  • 字符串处理工具Guava使用总结

    字符串处理工具Guava使用总结

              在java开发过程中对字符串的处理是非常频繁的,google的guava工具对字符串的一些处理进行优化,使我们开发过程中让自己的代码看去更加美观,清爽。

    1:maven依赖:

          <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>18.0</version>
            </dependency>

    一、Joiner

    根据给定的分隔符把字符串连接到一起

    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());
    9、一步将字符串转为List<Integer>集合
    List<Integer> list=Splitter.on(",").splitToList("111#222#333").stream()
            .mapToInt(str->Integer.valueOf(str)).boxed().distinct().collect(Collectors.toList());
    } }

    二、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]
        }
    }

    集合分隔:

     List<List<String>> ids= Lists.partition(list, 100);

    三、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
        }
    }
  • 相关阅读:
    8月7号的练习:HDU 1069&&POJ 1636&&HDU 1031&&HDU 1051&&HDU 1551
    8月8号的线段树:HDU 1754&&POJ 3264&&HDU1166
    8月6号的题目:HDU 1003&& POJ 1050&&HDU 1800&&HDU 2036&& POJ 1088(记忆化搜索)
    HDU 1052
    背包问题九讲:
    一个人的旅行 HDU 2066 &&HDU Today HDU 2112
    8月3号的LCS,LIS,LICS:Longest Ordered Subsequence&&Common Subsequence&&Greatest Common Increasing Subsequence
    那些操蛋的搜索题目:逃离迷宫&&哈密顿绕行世界问题
    C语言栈调用机制初探
    linux0.11改进之四 基于内核栈的进程切换
  • 原文地址:https://www.cnblogs.com/dw3306/p/11013318.html
Copyright © 2011-2022 走看看