1. <dependency>
  2. <groupId>com.google.guava</groupId>
  3. <artifactId>guava</artifactId>
  4. <version>30.1.1-jre</version>
  5. </dependency>

集合

  1. List<String> list = Lists.newArrayList();
  2. List<Integer> list = Lists.newArrayList(1, 2, 3);
  3. // 反转list
  4. List<Integer> reverse = Lists.reverse(list);
  5. System.out.println(reverse); // 输出 [3, 2, 1]
  6. // list集合元素太多,可以分成若干个集合,每个集合10个元素
  7. List<List<Integer>> partition = Lists.partition(list, 10);
  8. Map<String, String> map = Maps.newHashMap();
  9. Set<String> set = Sets.newHashSet();

Multimap 一个key可以映射多个value的HashMap,省得你再创建 Map

  1. Multimap<String, Integer> map = ArrayListMultimap.create();
  2. map.put("key", 1);
  3. map.put("key", 2);
  4. Collection<Integer> values = map.get("key");
  5. System.out.println(map); // 输出 {"key":[1,2]}
  6. // 还能返回你以前使用的臃肿的Map
  7. Map<String, Collection<Integer>> collectionMap = map.asMap();

BiMap 一种连value也不能重复的HashMap

  1. BiMap<String, String> biMap = HashBiMap.create();
  2. // 如果value重复,put方法会抛异常,除非用forcePut方法
  3. biMap.put("key","value");
  4. System.out.println(biMap); // 输出 {"key":"value"}
  5. // 既然value不能重复,何不实现个翻转key/value的方法,已经有了
  6. BiMap<String, String> inverse = biMap.inverse();
  7. System.out.println(inverse); // 输出 {"value":"key"}

Table 一种有两个key的HashMap

  1. // 一批用户,同时按年龄和性别分组
  2. Table<Integer, String, String> table = HashBasedTable.create();
  3. table.put(18, "男", "yideng");
  4. table.put(18, "女", "Lily");
  5. System.out.println(table.get(18, "男")); // 输出 yideng
  6. // 这其实是一个二维的Map,可以查看行数据
  7. Map<String, String> row = table.row(18);
  8. System.out.println(row); // 输出 {"男":"yideng","女":"Lily"}
  9. // 查看列数据
  10. Map<Integer, String> column = table.column("男");
  11. System.out.println(column); // 输出 {18:"yideng"}

Multiset 一种用来计数的Set

  1. Multiset<String> multiset = HashMultiset.create();
  2. multiset.add("apple");
  3. multiset.add("apple");
  4. multiset.add("orange");
  5. System.out.println(multiset.count("apple")); // 输出 2
  6. // 查看去重的元素
  7. Set<String> set = multiset.elementSet();
  8. System.out.println(set); // 输出 ["orange","apple"]
  9. // 还能查看没有去重的元素
  10. Iterator<String> iterator = multiset.iterator();
  11. while (iterator.hasNext()) {
  12. System.out.println(iterator.next());
  13. }
  14. // 还能手动设置某个元素出现的次数
  15. multiset.setCount("apple", 5);

参考

【1】常用的 Java 工具库:https://mp.weixin.qq.com/s?src=11&timestamp=1634476746&ver=3380&signature=MosQuOz3XsX2GPqeqzyoD9gATENYMkWpZIMYqMF-JlPVjgfVWWYh4RFp16kh0sAz0kITwAQRo*sjcV9NJAkA6LEwzCQQ7gNzKj06trg0v4w8cK7L79irLSfqkbci&new=1