public class GuavaStringsUtil { public void stringUtil(){ //Strings.isNullOrEmpty(input) demo String input = ""; boolean isNullOrEmpty = Strings.isNullOrEmpty(input); System.out.println("input " + (isNullOrEmpty?"is":"is not") + " null or empty."); } public void common(){ //Strings.commonPrefix(a,b) demo String a = "com.jd.coo.Hello"; String b = "com.jd.coo.Hi"; String ourCommonPrefix = Strings.commonPrefix(a,b); System.out.println("a,b common prefix is " + ourCommonPrefix); //Strings.commonSuffix(a,b) demo String c = "com.google.Hello"; String d = "com.jd.Hello"; String ourSuffix = Strings.commonSuffix(c,d); System.out.println("c,d common suffix is " + ourSuffix); } public void pad(){ int minLength = 4; String padEndResult = Strings.padEnd("123", minLength, '0'); System.out.println("padEndResult is " + padEndResult); String padStartResult = Strings.padStart("1", 2, '0'); System.out.println("padStartResult is " + padStartResult); } public void splitter(){ Iterable<String> splitResults = Splitter.onPattern("[,,]{1,}") .trimResults() .omitEmptyStrings() .split("hello,word,,世界,水平"); for (String item : splitResults) { System.out.println(item); } /*** * Splitter的onPattern方法传入的是一个正则表达式,其后紧跟的trimResults()方法表示要对结果做trim,omitEmptyStrings()表示忽略空字符串,split方法会执行拆分操作。 split返回的结果为Iterable<String>,我们可以使用for循环语句来逐个打印拆分字符串的结果。 Splitter还有更强大的功能,做二次拆分,这里二次拆分的意思是拆分两次,例如我们可以将a=b;c=d这样的字符串拆分成一个Map<String,String>。 * */ String toSplitString = "a=b;c=d,e=f"; Map<String,String> kvs = Splitter.onPattern("[,;]{1,}").withKeyValueSeparator('=').split(toSplitString); for (Map.Entry<String,String> entry : kvs.entrySet()) { System.out.println(String.format("%s=%s", entry.getKey(),entry.getValue())); } /** *二次拆分首先是使用onPattern做第一次的拆分,然后再通过withKeyValueSeperator('')方法做第二次的拆分。 * */ } public void join(){ /** * 合并代码 * */ String joinResult = Joiner.on(" ").join(new String[]{"hello","world"}); System.out.println(joinResult); Map<String,String> map = new HashMap<String,String>(); map.put("a", "b"); map.put("c","d"); String mapJoinResult = Joiner.on(",").withKeyValueSeparator("=").join(map); System.out.println(mapJoinResult); } /** * 我们在开发中经常会需要比较两个对象是否相等,这时候我们需要考虑比较的两个对象是否为null,然后再调用equals方法来比较是否相等,google guava库的com.google.common.base.Objects类提供了一个静态方法equals可以避免我们自己做是否为空的判断,示例如下: */ public void objectEncapsulation(){ Object a = null; Object b = new Object(); boolean aEqualsB = Objects.equal(a, b); /** * public static boolean equal(@Nullable Object a, @Nullable Object b) { * return a == b || (a != null && a.equals(b)); } */ } class Student{ private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return Objects.toStringHelper(this.getClass()) .add("id",id) .add("name",name) .add("age",age).omitNullValues().toString(); } } public void methodToString(){ Student student = new Student(); student.setId(1); student.setName("jack"); student.setAge(23); System.out.println(student.toString()); /** * 我们定义了一个Student类,该类有三个属性,分别为id,name,age,我们重写了toString()方法,在这个方法中我们使用了Objects.toStringHelper方法,首先指定toString的类,然后依次add属性名称和属性值,可以使用omitNullValues()方法来指定忽略空值,最后调用其toString()方法,就可以得到一个格式很好的toString实现了。 */ } } |
guava 基础操作
最新推荐文章于 2024-01-10 19:00:14 发布