- 浏览: 3434428 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
利用apache Collections和google guava对list和map进行过滤和排序 http://www.jiancool.com/article/50723356810/
官方http://code.google.com/p/guava-libraries/wiki/GuavaExplained?tm=6
基础工具--Guava-Libraries学习笔记
[url]http://www.cnblogs.com/htynkn/archive/2012/08/19/guava_1.html [/url]
Guava-Libraries是google对java的一个扩展,主要涵盖集合、缓存、并发、I/O、反射等等。
它本来是Google内部所使用的一个类库,后来整理开源出来了。这套库的设计引入了很多新的理念,研究一下可能会使你对Java这门语言有新的认识和看法。
地址:[url]http://code.google.com/p/guava-libraries/ [/url]
。。。
。。。
Google Guava集合4:创建方法和只读特性 http://vipcowrie.iteye.com/blog/1522375
本文地址:http://www.longtask.com/blog/?p=730
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。目前主要包含:
com.google.common.annotations
com.google.common.base
com.google.common.cache
com.google.common.collect
com.google.common.eventbus
com.google.common.io
com.google.common.net
com.google.common.primitives
com.google.common.util.concurrent
这里先介绍一下最常用的com.google.common.collect包中的最常用的一些API,仅仅讨论一下API的使用方法,没有讨论到实现细节。
1:Collections的构造方法
我们平时直接创建Collections对象的方法一般都是用new关键字,有泛型的情况下看起来会比较长:
在java7中,这个初始化做了简化:
可以通过Guava的API来这样写:
得到一个有size的Map:
在JDK的collection类型,在Guava中都可以找到相关的static的构造方法,例如:Lists , Sets , Maps , Queues。新的colleciont类型提供了直接构造的方法,例如:HashMultimap<String, String> multiMap = HashMultimap.create();
2:有限功能的函数式编程
介绍2个重要的接口:
com.google.common.base.Function : 根据输入值来得到输出值
com.google.common.base.Predicate : 根据输入值得到 true 或者 false
拿Collections2中有2个函数式编程的接口:filter , transform ,例如 :在Collection<Integer>中过滤大于某数的内容:
把Lis<Integer>中的Integer类型转换为String , 并添加test作为后缀字符:
需要说明的是每次调用返回都是新的对象,同时操作过程不是线程安全的。
3:Multimap and BiMap
Map中一个key只能有一个,后续put进去的内容会覆盖前面的内容,有些业务需要有相同的key,但是有不同的内容,Guava中提供了
Multimaps 来解决这个问题。
BiMap可以有相同的key,但是不能有相同的value,如果不同的key设置了相同的value,则会抛出IllegalArgumentException异常,可以通过inverse()来反转kv,values()来获取value的set。
4:tables
给出一个columns, rows , values, 这个API和Map<K , Map<K , V>>形式差不多,多了一些封装。例子:
5:更简洁的判断
使用Preconditions中的方法来判断是否为空等操作,这个操作和spring,apache common-lang中的API类似
Common-lang,spring中的方法需要逐个调用。而Guava中支持。
6:约束
对Collection中的新加入元素做约束,只有符合条件的元素才能够被添加到Collection中,可以使用Constraint类来操作。
示例代码:
参考资料
http://blog.solidcraft.eu/2010/10/googole-guava-v07-examples.html
http://insightfullogic.com/blog/2011/oct/21/5-reasons-use-guava/#
http://codingjunkie.net/google-guava-cache/
官方http://code.google.com/p/guava-libraries/wiki/GuavaExplained?tm=6
基础工具--Guava-Libraries学习笔记
[url]http://www.cnblogs.com/htynkn/archive/2012/08/19/guava_1.html [/url]
Guava-Libraries是google对java的一个扩展,主要涵盖集合、缓存、并发、I/O、反射等等。
它本来是Google内部所使用的一个类库,后来整理开源出来了。这套库的设计引入了很多新的理念,研究一下可能会使你对Java这门语言有新的认识和看法。
地址:[url]http://code.google.com/p/guava-libraries/ [/url]
。。。
。。。
Google Guava集合4:创建方法和只读特性 http://vipcowrie.iteye.com/blog/1522375
本文地址:http://www.longtask.com/blog/?p=730
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。目前主要包含:
com.google.common.annotations
com.google.common.base
com.google.common.cache
com.google.common.collect
com.google.common.eventbus
com.google.common.io
com.google.common.net
com.google.common.primitives
com.google.common.util.concurrent
这里先介绍一下最常用的com.google.common.collect包中的最常用的一些API,仅仅讨论一下API的使用方法,没有讨论到实现细节。
1:Collections的构造方法
我们平时直接创建Collections对象的方法一般都是用new关键字,有泛型的情况下看起来会比较长:
Map<String , Map<String , String>> see = new HashMap<String, Map<String,String>>();
在java7中,这个初始化做了简化:
Map<String , Map<String , String>> see = new HashMap<>();
可以通过Guava的API来这样写:
Map<String , Map<String , String>> see = Maps.newHashMap();
得到一个有size的Map:
Map<String , Map<String , String>> see = Maps.newHashMapWithExpectedSize(32);
在JDK的collection类型,在Guava中都可以找到相关的static的构造方法,例如:Lists , Sets , Maps , Queues。新的colleciont类型提供了直接构造的方法,例如:HashMultimap<String, String> multiMap = HashMultimap.create();
2:有限功能的函数式编程
介绍2个重要的接口:
com.google.common.base.Function : 根据输入值来得到输出值
com.google.common.base.Predicate : 根据输入值得到 true 或者 false
拿Collections2中有2个函数式编程的接口:filter , transform ,例如 :在Collection<Integer>中过滤大于某数的内容:
Collection<Integer> filterList = Collections2.filter(collections , new Predicate<Integer>(){ @Override public boolean apply(Integer input) { if(input > 4) return false; else return true; } }); list = new ArrayList<Integer>(filterList); //继续转到原来类型
把Lis<Integer>中的Integer类型转换为String , 并添加test作为后缀字符:
List<String> c2 = Lists.transform(list, new Function<Integer , String>(){ @Override public String apply(Integer input) { return String.valueOf(input) + "test"; } });
需要说明的是每次调用返回都是新的对象,同时操作过程不是线程安全的。
3:Multimap and BiMap
Map中一个key只能有一个,后续put进去的内容会覆盖前面的内容,有些业务需要有相同的key,但是有不同的内容,Guava中提供了
Multimaps 来解决这个问题。
Multimap<String, String> prosons = HashMultimap.create(); prosons.put("longhao", "hubei"); prosons.put("lilei" , "henan"); prosons.put("longhao", "shanxi"); prosons.put("liuxia", "beijing"); prosons.put("lilei", "hainan"); Iterator<String> it = prosons.get("longhao").iterator(); while(it.hasNext()){ System.out.println(it.next()); }
BiMap可以有相同的key,但是不能有相同的value,如果不同的key设置了相同的value,则会抛出IllegalArgumentException异常,可以通过inverse()来反转kv,values()来获取value的set。
public void biMapShouldOnlyHaveUniqueValues() { BiMap<Integer, String> biMap = HashBiMap.create(); biMap.put(1, "a"); biMap.put(2, "b"); biMap.put(3, "a"); //argh! an exception }
4:tables
给出一个columns, rows , values, 这个API和Map<K , Map<K , V>>形式差不多,多了一些封装。例子:
static void tables(){ Table<Integer , String , Integer> user = HashBasedTable.create(); user.put(1, "longhao", 29); user.put(1, "shuaige", 29); user.put(2, "xiaomi", 1); user.put(3, "soso", 3); System.out.println(user.containsColumn("soso"));//true System.out.println(user.containsColumn("3"));//false System.out.println(user.contains(1, "xiaomi"));//false System.out.println(user.contains(1, "meinv"));//true System.out.println(user.row(1));//{shuaige=29, longhao=29} }
5:更简洁的判断
使用Preconditions中的方法来判断是否为空等操作,这个操作和spring,apache common-lang中的API类似
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; static void checkParam(String name , Integer passwd){ checkNotNull(name , passwd); checkArgument("" != name , passwd > 0); }
Common-lang,spring中的方法需要逐个调用。而Guava中支持。
6:约束
对Collection中的新加入元素做约束,只有符合条件的元素才能够被添加到Collection中,可以使用Constraint类来操作。
示例代码:
import static com.google.common.collect.Constraints.constrainedList; static void constraintExam(){ Constraint<String> chkListStr = new Constraint<String>(){ @Override public String checkElement(String element) { if(element.startsWith("h")){ throw new IllegalArgumentException("不允许有h开头的内容"); } return element; } }; List<String> list = Lists.newArrayList("li","hao","a"); List<String> conList = constrainedList(list, chkListStr); conList.add("soso"); conList.add("hqb");// throw IllegalArgumentException for(String str : list){ System.out.println(str); } }
参考资料
http://blog.solidcraft.eu/2010/10/googole-guava-v07-examples.html
http://insightfullogic.com/blog/2011/oct/21/5-reasons-use-guava/#
http://codingjunkie.net/google-guava-cache/
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 1039http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 708http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2510http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2481Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1077跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1186JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1315freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1106原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2891原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1552http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2294http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3463http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1870Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1036使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1418管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1325集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4810使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2319apache shiro集群实现(一) session共享 h ...
相关推荐
### Google Guava Collections 使用介绍 #### 一、概述 Google Guava Collections 是 Java Collections Framework 的一个强大且实用的非官方扩展 API。它由 Google 工程师 Kevin Bourrillion 和 Jared Levy 在著名...
guava类似Apache Commons工具集包含了若干被Google的 Java项目广泛依赖 的核心库
### Google Guava Collections 使用介绍 #### 一、Google Guava Collections 概览 Google Guava Collections,简称Guava Collections,是对Java Collections Framework进行增强和扩展的开源项目。它由Google工程师...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
**Google Guava官方教程** Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及...
在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...
《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...
1. **集合框架增强**:Guava 提供了丰富的集合类,如 Multiset(多集合)、Multimap(多映射)、Immutable collections(不可变集合)等,这些集合在功能和性能上都优于 Java 标准库中的集合。 2. **缓存**:Guava ...
本示例主要涉及了三种常用的缓存管理工具:Redis、Guava Cache和Caffeine。让我们深入探讨这些技术及其在Spring Boot中的实现。 首先,Redis是一个开源的、基于网络的、支持多种数据结构(如字符串、哈希、列表、...
Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...
谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...
Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...
标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
**Google Guava官方教程概述** Google Guava 是一个开源库,为Java开发人员提供了一组核心库,包括集合、缓存、并发工具、I/O工具、字符串处理、实用方法等。这个官方教程主要针对Guava库的使用进行详细介绍,帮助...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Google Guava库是由Google开发的一个开源项目,旨在提供Java开发中常用的基础功能。它的目标是简化Java编程,为开发者提供更加清晰、高效的代码编写方式。通过使用Guava库,开发者可以不必在每次项目中重复编写相同...
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Google Guava 官方教程 v1.1 2018-07-22 https://github.com/tianbian224/GuavaLearning/blob/master/Google%20Guava%20%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%20-%20v1.1.pdf