`
michael.geng
  • 浏览: 2991 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

guava 使用总结

    博客分类:
  • java
阅读更多
guava 是google工程师开源的java工具包,里面包括了大量常用及好用的工具总结,谷歌的内部工程师也在大量使用。
guava主要包括这些包:
    base              基本的工具类与接口
    io                 io流相关的工具类与方法
    net               网络地址相关的工具类与方法
    primitives        原始类型的工具类
    collect           通用集合接口与实现,与其集合相关工具类
    util.concurrent 并发相关工具类

字符串:
Splitter.on(',').split("a,b");
	Splitter.on(',').trimResults().split("a , b");
	Splitter.on(',').omitEmptyStrings().split("a,,b");
	Strings.isNullOrEmpty("")
	Strings.repeat("java", 3)
	Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011", "08", "04"));  

链式操作:
String s = Joiner.on(“,”).skipNulls().join(new int[]{2,3,4});//将int数组拼成字符串
	String s = Joiner.on(“;”).withKeyValueSeparator(“|”).join(userIdNameMap);//针对map的

CaseFormat :
	Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));
	Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));


文件操作:
Files.copy(from,to);
	Files.deleteDirectoryContents(File directory); //删除文件夹下的内容(包括文件与子文件夹)  
	Files.deleteRecursively(File file); //删除文件或者文件夹  
	Files.move(File from, File to); //移动文件 

Preconditions :
Preconditions.checkArgument(count > 0, "must be positive: %s", count); //判断 抛异常



Resources提供了针对classpath下资源操作的工具方法 :
    URL url = Resources.getResource("config.xml"); //获取classpath根下的config.xml文件url

Guava新增了一个概念,叫做 不可变集合,ImmutableCollection:
Map params = ImmutableMap.of(“name”, “zhangsan”, “age”, 20);


非常实用的一个API: MapDifference<K, V> diff = Maps.difference(Map<K, V> left, Map<K, V> right); 之后可以调用
diff.entriesOnlyOnLeft() // 获得只在左集合有的部分
diff.entriesOnlyOnRight() // 获得只在右集合有的部分
diff.entriesInCommon() // 获得交集部分

Guava新增了一个概念,叫做BiMap,双向Map,比如说我需要一个Map,可以根据用户ID找到用户昵称,还可以根据用户昵称查找用户ID,这时就可以用到双向Map了。

Multiset,可以对每个元素进行计数,通俗点讲,Multiset<E>就相当于Map<E, Integer>
0
0
分享到:
评论

相关推荐

    不加密Google Guava视频教程.txt

    ├─Google Guava 第14讲-Guava之Closer使用和原理剖析,非常重要.wmv ├─Google Guava 第15讲-Base64原理详解,手动实现base64的Encoding.wmv ├─Google Guava 第16讲-Base64原理详解,手动实现base64的...

    guava_programming.zip

    汪文君Google Guava 代码。Guava之函数式接口、Guava EventBus源码剖析以及优缺点总结

    Spring Retry 和 Guava Retrying重试机制的使用详解

    Spring Retry 和 Guava Retrying重试机制的使用详解 内容简介: 1、Spring-Retry优雅地实现重试机制 2、Guava-Retry灵活且强大的重试机制库 3、总结

    fluent-traversable:支持通过函数方式对集合和数组进行操作。 受 guava 的 FluentIterable、java8 Stream 框架和 scala 的启发

    这个库的灵感来自 java8 流框架、guava FluentIterable 和 Scala 功能特性。 为了充分享受这个库,欢迎了解基本的功能模式。 总结和主要特点: 允许使用数组和所有实现Traversable接口的东西 基于函数式编程概念...

    Android EventBus 3.0.0 使用总结(必看篇)

    EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多。用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是...

    通过反射获取注解的属性值(源代码)

    通过反射获取注解的属性值 1、获取类上注解的值 1.1 定义注解类 1.2 定义使用注解的类 1.3 测试类 1.4 测试结果 2、获取属性变量上注解的值 2.1 定义注解类 2.2 定义使用注解的类 2.3 定义测试类 ...总结:

    mapreduce报错解决办法总结

    Jobtracker启动报错:解决方法:导入guava-r09-jarjar.jar org/apache/hadoop/thirdparty/guava/common/collect/LinkedListMultimap错误分析及解决方法: Intel版本hadoop因为缺少license,启动jobtracker报错:

    springboot通用限流代码

    springboot通用限流代码,详细总结了基于springboot的常用的限流解决方案,比如集成guava,sentinel等,最后以插件化的方式引入,代码拿到后可以直接使用。

    java8集合源码分析-java-demos:java-演示

    [全网最详细的一篇SpringCloud总结] () [feign] () [Spring Security 真正的前后分离实现] () [Spring Cloud Gateway] () [SpingCloud Gateway网关核心概念和原理] () [基于Redis实现Spring Cloud Gateway] () ...

    谷歌师兄的leetcode刷题笔记-JavaNote:javaesguavajdkjdk8jsonlombokmdthreadjvmsprin

    设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 基于以下的面向对象设计原则。 - 对接口编程而不是对...

    java8源码-GH-Demo:一个对日常开发中问题点总结和记录的Demo

    7、在Guava的基础上实现《数据结构》中的关键路径、最短路径、最小生成树、图的遍历等算法 8、进阶java8中的函数式编程(Lambda表达式) 9、学习ForkJoinPool并发编程方式 10、学习Android中的StateMachine的层次...

    selenium环境搭建(版本火狐52+selenium 3.3 +geckodriver 15.0).zip

    java+testng使用火狐52进行自动化测试,最终发现是fselenium、firefox、geckodriverbane版本不匹配问题。现总结完美适配的包,selenium环境搭建(版本火狐52+selenium 3.3 +geckodriver 15.0),希望大家在自动化得...

    博客:写文章的地方

    总结 Java :hot_beverage: Java 项目 语言 文章 分析Guava中优秀的代码段 Java Guava_Magic_Code_1 Guava_Magic_Code_2 :spouting_whale: 码头工人 项目 语言 文章 初识docker 视频 清理docker缓存 视频 :...

    996视频学习笔记-20211115.docx

    1 适合初级进阶 2 简单的总结记录 3 涵盖 java8新特性lambda,Stream API,Try-with-resource,Guava,线程池,Loombok,验证框架

    在windows下编译运行android原生浏览器需要的包类

    最后搞来搞去搞成了,总结一下1、4个包创建user library安放顺序frame_class.jar、core_class.jar、 comon_class.jar、android.jar。然后置顶。2、guava-r07.jar项目中创个libs文件夹放入作为普通jar包add上去。3、...

    积分管理系统java源码-example-ratelimit:示例速率限制

    本篇文章将详细的,深入的介绍限流的各种场景和属性,然后分析guava这个限流器的核心源码,并对其特性进行总结。属于稍高级的进阶篇。 限流场景 弄清楚你要限制的资源,是这个过程中最重要的一环。我大体将它分为三...

    Java-notes:Java 知识梳理和学习笔记,计算机网络,数据结构,设计模式等

    Guava Joda-time Log4j Java 8 容器 Tomcat 1、Java 语言基础和JDK源码阅读 Java 语言基础 编号 名称 1 基本 2 运算符 3 数据类型 4 类 对象 接口 5 数组 6 枚举 7 异常处理 8 注解 9 范型 其他 编号 名称 1 Object...

    JavaNote:java es番石榴jdk jdk8 jsonLombokmd线程jvm spring mvc vertx设计模式风暴

    设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 基于以下的面向对象设计原则。 - 对接口编程而不是对...

    sesvc.exe 阿萨德

    Map 在使用过程中不断的往里面存放数据,当数量达到了 16 * 0.75 = 12 就需要将当前 16 的容量进行扩容,而扩容这个过程涉及到 rehash、复制数据等操作,所以非常消耗性能。 因此通常建议能提前预估 HashMap 的大小...

    mysql.docx

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。...个人收集总结的关于一点mysql的知识,希望对其它人有帮助

Global site tag (gtag.js) - Google Analytics