Google-Guava工具类整理

更详细整理: [url]http://blog.csdn.net/alecf/article/details/24775979[/url]
原文: [url]http://my.oschina.net/shma1664/blog/596904[/url]
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();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值