Guava 库

https://www.yiibai.com/guava

https://wizardforcel.gitbooks.io/guava-tutorial/content/1.html

 

com.google.common.base.Preconditions

checkArgument(i < j, "Expected i < j, but %s > %s", i, j);
checkNotNull(a, "parameter is Null");

 

com.google.common.base.Objects

equals,避免抛出NullPointerException

Objects.equal("a", "a"); // returns true
Objects.equal(null, "a"); // returns false
Objects.equal("a", null); // returns false
Objects.equal(null, null); // returns true

hashCode, 

System.out.println(Objects.hashCode("a","b","c"));
Person person=new Person("peida",23);
System.out.println(Objects.hashCode(person));

 

com.google.common.cache.CacheBuilder

可设置过期的cache

https://segmentfault.com/a/1190000011105644

 

集合

http://ifeve.com/google-guava-collectionutilities/

com.google.common.collect.Maps

更简单的创建,newLinkedHashMap(),newConcurrentMap()

Map<String, String> aNewMap = Maps.newHashMap();

Lists,Sets

List<TypeThatsTooLongForItsOwnGood> list = Lists.newArrayList()

 

com.google.common.collect.Multimap

//Map<String, List<String>>
// lower -> a, b, c
// upper -> A, B

Multimap<String,String> multimap = ArrayListMultimap.create();

multimap.put("lower", "a");
multimap.put("lower", "b");
multimap.put("lower", "c");

multimap.put("upper", "A");
multimap.put("upper", "B");

Map<String, Collection<String>> map = multimap.asMap();

 

com.google.common.collect.Multiset

多个重复的值

Multiset<String> multiset = HashMultiset.create();
multiset.add("a");
multiset.add("a");
multiset.add("c");

Set<String> set = multiset.elementSet();

 

ImmutableMap,比java直接构建静态map要简单

Map<String, Integer> salary = ImmutableMap.<String, Integer> builder()
.put("John", 1000)
.put("Jane", 1500)
.put("Adam", 2000)
.put("Tom", 2000)
.build();

 

Table

当你想使用多个键做索引的时候,你可能会用类似Map<FirstName, Map<LastName, Person>>的实现,这种方式很丑陋,使用上也不友好。Guava为此提供了新集合类型Table

Table<Vertex, Vertex, Double> weightedGraph = HashBasedTable.create();
weightedGraph.put(v1, v2, 4);
weightedGraph.put(v1, v3, 20);
weightedGraph.put(v2, v3, 5);

weightedGraph.row(v1); // returns a Map mapping v2 to 4, v3 to 20
weightedGraph.column(v3); // returns a Map mapping v1 to 20, v2 to 5

 

字符串

com.google.common.base.Joiner

Joiner joiner = Joiner.on("; ").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");

com.google.common.base.Splitter

Splitter.on(',')
        .trimResults()
        .omitEmptyStrings()
        .split("foo,bar,,   qux");

 

Hash

com.google.common.hash.Hashing

md5
sha256
sha512
sha1
murmur3_128
murmur3_32
goodFastHash

 

posted on 2019-10-23 16:30  fxjwind  阅读(202)  评论(0编辑  收藏  举报