Skip to content

Instantly share code, notes, and snippets.

@greycode
Last active November 20, 2017 16:50
Show Gist options
  • Save greycode/2969fe130d345f87a208 to your computer and use it in GitHub Desktop.
Save greycode/2969fe130d345f87a208 to your computer and use it in GitHub Desktop.
Guava 开发
package org.yct.demo.guava;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import static com.google.common.base.Preconditions.*;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Ordering;
public class Employee implements Comparable<Employee> {
private String name;
private Integer age;
private Job job;
public Employee() { }
public Employee (String name,int age) {
this.name = checkNotNull(name, "name 不能为null:", name);
checkArgument(age > 20, "age 必须大于 20:",age);
this.age = age;
}
public String getCoordinatesAsText() {
// return (getGpsCoordinates() != null) ? getGpsCoordinates() : "DEFAULT_LOCATION";
return MoreObjects.firstNonNull(getGpsCoordinates(), "DEFAULT_LOCATION");
}
private String getGpsCoordinates() {
// retrieve GPS coordinates from satellite // VERY SLOW!!
return null;
}
public int compareTo(Employee other) {
return ComparisonChain
.start()
// 以英文字母(从a到z)的自然顺序,NULL值放在最后
.compare(this.name, other.name, Ordering.natural().nullsLast())
// 以数字的反序(从大到小),NULL值处于最后
.compare(this.age, other.age, Ordering.natural().reverse().nullsLast())
.compare(this.job, other.job, Ordering.natural().nullsLast())
.result();
}
@Override
public int hashCode() {
return Objects.hashCode(name, age, job);
}
@Override
public String toString () {
return MoreObjects.toStringHelper(this)
.omitNullValues()
.add("name", name)
.add("age", age)
.add("job", job)
.toString();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Job getJob() {
return job;
}
public void setJob(Job job) {
this.job = job;
}
}
public static void guavaDemo() {
Employee ee = new Employee("Jhon",22);
// Employee{name=Jhon, age=22}
System.out.println(ee.toString());
// DEFAULT_LOCATION
System.out.println(ee.getCoordinatesAsText());
List<Map<String, Object>> maps = Lists.newArrayList();
List<Employee> ees = Lists.newArrayList();
List<String> langs = Lists.newArrayList("中文","English","日本語",null);
String lang = Joiner.on("|").useForNull("Unkown").join(langs);
// 中文|English|日本語|Unkown
System.out.println(lang);
// Like Map<Job, Collection<Employee>>
Multimap<Job, Employee> multimap = ArrayListMultimap.create();
multimap.put(Job.CEO, new Employee("Tom",45));
multimap.put(Job.DESIGNER, new Employee("Jack",24));
multimap.put(Job.DEVELOPER, new Employee("Alice", 31));
multimap.put(Job.DEVELOPER, new Employee("Jhone", 25));
multimap.put(Job.DEVELOPER, new Employee("Jim", 27));
//Map<Job,List<Employee>> jobs = Multimap.
}
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
@chris-zh
Copy link

chris-zh commented Jul 4, 2016

谢谢楼主分享,很有帮助的gist,能否给个打赏的二维码,给你加一个煎饼果子

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment