版本下载: https://repo1.maven.org/maven2/com/google/guava/guava/

Guava工程包含了若干被Google的Java项目广泛依赖的核心库,例如:集合[collections]、缓存[caching]、原生类型支持[primitives support]、并发库[concurrency libraries]、通用注解[common annotations]、字符串处理[string processing]、l/0等等。所有这些工具每天都在被Google的工程师应用在产品服务中。

1、不可变集合:用不变的集合进行防御性编程和性能提升。
2、新集合类型: multisets, multimaps, tables,等
3、强大的集合工具类:提供av.til.Collections中没有的集合工具
4、扩展工具类:让实现和扩展集合类变得更容易,比如创建Collection的装饰器, 或实现迭代器

常用功能:
1、只读设置
2、函数式编程:过滤器
3、函数式编程:转换
4、组合式函数编程
5、加入约束:非空、长度验证
6、集合操作:交集、差集、并集
7、Multiset:无序可重复
8、Multimap key可以重复
9、BiMap:双向Map(bidirectional Map)键与值不能重复
10、双键的Map -->Table -->rowKey+columnKye+value

代码示例:

package com.guava;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;import org.junit.Test;import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
import com.google.common.collect.Collections2;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
import com.google.common.collect.Table;
import com.google.common.collect.Table.Cell;public class GuavaTest {//只读@Testpublic void guavatest1(){//List<String> list = Arrays.asList("Tom","Booy","Lily","Tonly");List<String> list =new ArrayList<>();list.add("Tom");list.add("Booy");list.add("Lily");list.add("Tonly");//Collections工具只读集合设置//List<String> readlist = Collections.unmodifiableList(list);//Guava只读设置//ImmutableList<String> readlist = ImmutableList.of("Tom","Booy","Lily","Tonly");//readlist.add("Arily");}    //过滤器filter@Testpublic void guavatest2() {List<String> list =Lists.newArrayList("Tom","Booy","Lily","Tonly");Collection<String> f1 =Collections2.filter(list, e->e.startsWith("T"));//过滤开头f1.forEach(System.out::println);      }//转换@Testpublic void guavatest3() {Set<Integer> timeset = Sets.newHashSet(20080808,20120808,20200520);Collection<String> newset = Collections2.transform(timeset, (x)->new SimpleDateFormat("yyyy-MM-dd").format(x));newset.forEach(System.out::println);}//组合式函数@Testpublic void guavatest4() {List<String> list =Lists.newArrayList("Tom","Booy","Lily","Tonly");Function<String, String> f1 = new Function<String, String>(){@Overridepublic String apply(String t) {return t.length()>4?t.substring(0,4):t;}};Function<String,String> f2 = new Function<String, String>(){@Overridepublic String apply(String t) {return t. toUpperCase();}};Function<String,String> f = Functions. compose(f1, f2);Collection<String> newf = Collections2.transform(list,f);newf.forEach(System.out::println);}//交集、差集、并集@Testpublic void guavatest5() {Set<Integer> set1 = Sets.newHashSet(1,2,3,4,5);Set<Integer> set2 = Sets.newHashSet(4,5,6,7,8);//交集SetView<Integer> sv = Sets.intersection(set1, set2);sv.forEach(System.out::println);//差集SetView<Integer> sv1 = Sets.difference(set1, set2);sv1.forEach(System.out::println);//并集SetView<Integer> sv2 = Sets.union(set1, set2);sv2.forEach(System.out::println);}//Multiset:无序可重复@Testpublic void guavatest6() {String s = "good good study day day up";String[] ss = s.split(" ");HashMultiset<String> set = HashMultiset.create();for(String s1:ss) {set.add(s1);}Set<String> set2 = set.elementSet();for(String s2:set2) {System.out.println(s2+"个数是"+set.count(s2));}}//Multimap key可以重复 先从普通容器把数据迭代到Multimap中,再在Multimap中操作@Testpublic void guavatest7() {Map<String,String> map = new HashMap<>();map.put("java高性能开发", "jack");map.put("Web高性能开发", "jack");map.put("php高效率开发", "lily");map.put("网络信息安全", "hony");Multimap<String, String> mmap = ArrayListMultimap.create();Iterator<Map.Entry<String,String>> iter =map.entrySet().iterator();while(iter.hasNext()) {Map.Entry<String, String> entry = iter.next();mmap.put(entry.getValue(), entry.getKey());}Set<String> setmap = mmap.keySet();for(String key:setmap) {Collection<String> value = mmap.get(key);System.out.println(key+":"+value);}}//BiMap:双向Map,键与值不能重复@Testpublic void guavatest8() {BiMap<String,String> bimap = HashBiMap.create();bimap.put("jackyy", "89784758");bimap.put("hony123", "88978977");bimap.put("lily", "46556567");BiMap<String,String> bimap1 = bimap.inverse();//反转String name = bimap1.get("89784758");System.out.println(name);}//双键的Map -->Table -->rowKey+columnKye+value@Testpublic void guavatest9() {Table<String,String,Integer> table = HashBasedTable.create();table.put("jack", "php", 90);table.put("lily", "html", 85);table.put("bigy", "java", 98);Set<Cell<String,String,Integer>> celltable = table.cellSet();for(Cell ct:celltable) {System.out.println(ct.getRowKey()+"的"+ct.getColumnKey()+"成绩为:"+ct.getValue());}}
}

java第三方类库Guava开源组件使用相关推荐

  1. ganymed ssh-2 for java,SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2

    SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2 1.Ganymed SSH-2 for Java Ganymed SSH-2 for Java是一 ...

  2. Google的Java常用类库 Guava

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库.这个库是为了方便编码,并减少编码错误.这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验 ...

  3. 创建 Java 第三方类库,以及制作类库的Javadoc

    http://blog.csdn.net/qiumengchen12/article/details/44550059 转载于:https://www.cnblogs.com/gc-note/p/77 ...

  4. Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

    来至于互联网 Office文档的Java处理包 POI [推荐] Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: ...

  5. 程序开发常用第三方类库一览表(VendorLib)

    以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ...

  6. java去掉rn,React Native删除第三方开源组件的依赖包

    最近项目即将上线,但是遇到了一个问题,安装之后第一次打开时,在有的Android手机上崩溃,之后再次运行就好了,好多Android机型都遇到这种情况,定位问题,发现是之前加载的第三方开源控件:reac ...

  7. 一个帮你轻松搞定第三方登陆的 Java 开源组件

    今天给大家推荐的这个开源项目,可以说非常非常的棒,有了它,可以让你大大提高第三方授权登录开发效率. 没错,这个开源项目就是:JustAuth . 目前这个开源项目的 star 数已经超过了 10k,超 ...

  8. Android 开源组件和第三方库汇总

    出自(https://github.com/Tim9Liu9/TimLiu-Android) TimLiu-Android 自己总结的Android开源项目及库. 1. github排名 https: ...

  9. gif图片压缩(纯java实现,不依赖第三方类库)

    笔者之前一直是在做电子商务系统的架构工作,其中也涉及到一些通用工具类的开发. 其中有一个工具,笔者认为很重要确又一直没有实现的,就是图片压缩:当然,图片压缩并没有什么难度,因为现成的开源的图片压缩工具 ...

最新文章

  1. GitHub的十大JavaScript项目
  2. 学会数据库读写分离、分表分库
  3. MyBatisPlus中删除方法deletetById、deleteBatchIds、deleteByMap的使用
  4. Flex Socket 安全沙箱问题解决
  5. 内核对象管理:Slab,Slub
  6. WindowsXP正版验证方法
  7. 关于结构体里面结构体的申明和使用
  8. 【转】Kotlin 新版来了,支持跨平台!
  9. matplotlib的基本使用 附python代码详细讲解(基本图的绘制、样式、简单函数的使用)
  10. Android系统(126)---OKHTTP
  11. 扩展单元格 == 报表
  12. Linux容器:cgroup,namespace原理与实现
  13. Python+pandas读取Excel文件统计最受欢迎的前3位演员
  14. VS2010 php 插件配置
  15. 2020 年 9 月程序员工资统计,新出炉!
  16. 请简述什么是spring的ioc和di_Spring的IoC与DI的理解
  17. 创业基础(第三章:创业机会及其识别与评价) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  18. 什么是ROM、EPROM、EEPROM、FLASH ROM、RAM?
  19. 企业微信打卡统计员工考勤
  20. 别人教我学计算机的作文,我教舅妈学电脑优秀作文.doc

热门文章

  1. SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!
  2. delphi获取外网IP
  3. el-table 表格内容多一根线的解决办法
  4. MongoDB Ubuntu安装 APP 支付宝微信支付
  5. Quant面试好题汇总
  6. linux cat 文件乱码
  7. 《HelloGitHub》第 65 期
  8. python导库快捷指令、快速导库、dlib库
  9. VMware下怎么批量创建,克隆,迁移虚拟机
  10. 智能手表的突破和新发展机遇