zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    密码系统的安全性
    liboqs-量子安全密码算法开源C库
    密码基础知识(1)
    同态加密
    NTL 库函数
    以太坊相关的区块链知识
    53字符流中第一个不重复的字符
    基础小知识总结
    52表示数值的字符串 记忆
    HIHOcoder编程总结
  • 原文地址:https://www.cnblogs.com/fxjwind/p/11727066.html
Copyright © 2011-2022 走看看