Google-Guava工具类收拾
Google-Guava工具类整理
更详细整理: http://blog.****.net/alecf/article/details/24775979
原文: http://my.oschina.net/shma1664/blog/596904
1、基本功能
1)字符串操作
2)对象封装:Objects
更详细整理: http://blog.****.net/alecf/article/details/24775979
原文: http://my.oschina.net/shma1664/blog/596904
1、基本功能
1)字符串操作
package com.shma.guava.base; import java.util.Map; import org.junit.Test; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Maps; /** * 字符串处理 * @author admin * */ public class StringsTest { /** * 判断是否为空 */ @Test public void testIsNullOrEmpty() { String name = ""; System.out.println(Strings.isNullOrEmpty(name)); //true String name2 = null; System.out.println(Strings.isNullOrEmpty(name2)); //true String name3 = "shma"; System.out.println(Strings.isNullOrEmpty(name3)); //false } /** * 截取两个字符串的相同前缀 */ @Test public void testCommonPrefix() { // 两个字符串相同的前缀或者后缀 String aString = "hi,a.shma.hello"; String bString = "hi,b.jjq.hello"; System.out.println(Strings.commonPrefix(aString, bString)); //hi, } /** * 截取两个字符串的相同后缀 */ @Test public void testCommonSuffix() { // 两个字符串相同的前缀或者后缀 String aString = "hi,a.shma.hello"; String bString = "hi,b.jjq.hello"; System.out.println(Strings.commonSuffix(aString, bString)); //.hello } /** * 字符串补全 */ @Test public void testPad() { int minLength = 5; //末尾以0补全 String padEndResult = Strings.padEnd("123", minLength, '0'); System.out.println(padEndResult); //12300 //开始补全 String padStartResult = Strings.padStart("123", minLength, '0'); System.out.println(padStartResult); //00123 } /** * 拆分字符串 */ @Test public void testSplitter() { Iterable<String> iterable = Splitter.onPattern("[,,;]") .trimResults() .omitEmptyStrings() .split("马韶华,张琦,笑笑,,老李,类型 哈哈,非也; 宵夜 "); for(String item : iterable) { System.out.println(item); } //二次拆分 String toSplitString = "a=1; b=2, c=3"; Map<String, String> kvs = Splitter.onPattern("[;,]") .trimResults() .omitEmptyStrings() .withKeyValueSeparator("=") .split(toSplitString); System.out.println(kvs); //{a=1, b=2, c=3} } /** * 字符串合并 */ @Test public void testJoin() { String users = Joiner.on(",").join(new String[]{"张三", "李四", "王五"}); System.out.println(users); //张三,李四,王五 //将Map<String, String>合并 Map<String, String> dataMap = Maps.newHashMap(); dataMap.put("1001", "张三"); dataMap.put("1002", "李四"); dataMap.put("1003", "王五"); dataMap.put("1004", "马六"); String mapString = Joiner.on(",").withKeyValueSeparator("=").join(dataMap); System.out.println(mapString); // 1003=王五,1004=马六,1001=张三,1002=李四 } /** * 重复输出次数 */ @Test public void testRepeat() { System.out.println(Strings.repeat("1234", 2)); // 12341234 } }
2)对象封装:Objects
package com.shma.guava2.base; import org.junit.Test; import com.google.common.base.Objects; import com.google.common.collect.ComparisonChain; /** * 复写Object中的方法实现 * @author admin * */ public class ObjectsTest { /** * 比较大小 */ @Test public void compareTest() { Person person1 = new Person("jqq", 24); Person person2 = new Person("jqq", 28); Person person3 = new Person("shma", 24); Person person4 = new Person("shma", 21); Person person5 = new Person("shma", 21); System.out.println(person1.compareTo(person2)); System.out.println(person1.compareTo(person3)); System.out.println(person3.compareTo(person4)); System.out.println(person5.compareTo(person4)); } /** * 实现toString */ @Test public void toStringTest() { System.out.println(Objects.toStringHelper(this).add("name", "shma").toString()); System.out.println(Objects.toStringHelper(Person.class).add("name", "shma").add("age", 23).toString()); Person person1 = new Person("jqq", 24); Person person2 = new Person("jqq", 24); System.out.println(person1); System.out.println(person2); System.out.println(person1.hashCode()); System.out.println(person2.hashCode()); System.out.println(person1.equals(person2)); } /** * 判断equals */ @Test public void equalsTest() { System.out.println(Objects.equal(null, "a")); //false System.out.println(Objects.equal("a", "a")); //true System.out.println(Objects.equal("", "")); //true System.out.println(Objects.equal("a", "")); //false System.out.println(Objects.equal(null, null)); //true System.out.println(Objects.equal(new Person("shma", 23), new Person("shma", 23))); //false Person person = new Person("jqq", 24); System.out.println(Objects.equal(person, person)); //true } /** * 计算hashcode * */ @Test public void hashCodeTest() { System.out.println(Objects.hashCode("a")); //128 System.out.println(Objects.hashCode("a")); //128 System.out.println(Objects.hashCode("a", "b")); //4066 System.out.println(Objects.hashCode("b", "a")); //4096 System.out.println(Objects.hashCode("b", "a", "c")); //127075 System.out.println(Objects.hashCode("a", "c", "b")); //126175 System.out.println(Objects.hashCode(new Person("shma", 23))); //21648900 System.out.println(Objects.hashCode(new Person("shma", 23))); //21846074 Person person = new Person("jqq", 24); System.out.println(Objects.hashCode(person)); //13856786 System.out.println(Objects.hashCode(person)); //13856786 } class Person implements Comparable<Person> { public String name; public int age; Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return Objects.toStringHelper(Person.class) .add("name", this.name) .add("age", this.age) .toString(); } @Override public int hashCode() { return Objects.hashCode(name, age); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if(this.name == other.name && this.age == other.age) return true; return false; } @Override public int compareTo(Person perosn) { return ComparisonChain.start() .compare(this.name, perosn.name) .compare(this.age, perosn.age) .result(); } } class Student implements Comparable<Student> { private String name; private int age; private int score; public Student() { super(); } public Student(String name, int age, int score) { super(); this.name = name; this.age = age; this.score = score; } @Override public String toString() { return Objects.toStringHelper(this) .add("name", name) .add("age", age) .add("score", score) .toString(); } @Override public int hashCode() { return Objects.hashCode(name, age); } @Override public boolean equals(Object obj) { if (obj instanceof Student) { Student that = (Student) obj; return Objects.equal(name, that.name) && Objects.equal(age, that.age) && Objects.equal(score, that.score); } return false; } @Override public int compareTo(Student student) { return ComparisonChain.start() .compare(this.name, student.name) .compare(this.age, student.age) .compare(this.score, student.score) .result(); } } }