- 浏览: 7862432 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
在这个例子中,给出一个list,过滤出含有字母a的元素
此外,可以使用Collections2.filter() 去进行过滤
这里注意的是,Collections2.filter中,当在上面的result中增加了元素后,会直接影响原来的names这个list的,就是names中的集合元素是5了。
再来看下predicates判断语言,
com.google.common.base. Predicate : 根据输入值得到 true 或者 false
拿Collections2中有2个函数式编程的接口:filter , transform ,例如 :在Collection<Integer>中过滤大于某数的内容:
把Lis<Integer>中的Integer类型转换为String , 并添加test作为后缀字符:
需要说明的是每次调用返回都是新的对象,同时操作过程不是线程安全的。
再来点例子:
将多个prdicate进行组合
上面的例子中找出包含J字母或不包含a的元素;
再看下如何将集合中的空元素删除:
检查一个collection中的所有元素是否符合某个条件:
下面看如何把一个list进行转换,
再看结合transform和predicates结合使用的例子:
在这个例子中,将一个LIST中的每一个元素进行使用Predicates.containsPattern,判断是否包含m,返回的是boolean,然后再得到的boolean值一起转换为collection
下面是两个function一起结合使用的例子:
在这个例子中,首先应用函数f1,求出每个元素的长度,然后再根据f1函数,分别返回
它们的boolean值,再转换为collection.
最后看下将filter和transform结合使用的例子:
@Test public void whenFilterWithIterables_thenFiltered() { List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Iterable<String> result = Iterables.filter(names, Predicates.containsPattern("a")); assertThat(result, containsInAnyOrder("Jane", "Adam")); }
在这个例子中,给出一个list,过滤出含有字母a的元素
此外,可以使用Collections2.filter() 去进行过滤
@Test public void whenFilterWithCollections2_thenFiltered() { List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<String> result = Collections2.filter(names, Predicates.containsPattern("a")); assertEquals(2, result.size()); assertThat(result, containsInAnyOrder("Jane", "Adam")); result.add("anna"); assertEquals(5, names.size()); }
这里注意的是,Collections2.filter中,当在上面的result中增加了元素后,会直接影响原来的names这个list的,就是names中的集合元素是5了。
再来看下predicates判断语言,
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; } });
把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"; } });
需要说明的是每次调用返回都是新的对象,同时操作过程不是线程安全的。
再来点例子:
@Test public void whenFilterCollectionWithCustomPredicate_thenFiltered() { Predicate<String> predicate = new Predicate<String>() { @Override public boolean apply(String input) { return input.startsWith("A") || input.startsWith("J"); } }; List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<String> result = Collections2.filter(names, predicate); assertEquals(3, result.size()); assertThat(result, containsInAnyOrder("John", "Jane", "Adam")); }
将多个prdicate进行组合
@Test public void whenFilterUsingMultiplePredicates_thenFiltered() { List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<String> result = Collections2.filter(names, Predicates.or(Predicates.containsPattern("J"), Predicates.not(Predicates.containsPattern("a")))); assertEquals(3, result.size()); assertThat(result, containsInAnyOrder("John", "Jane", "Tom")); }
上面的例子中找出包含J字母或不包含a的元素;
再看下如何将集合中的空元素删除:
@Test public void whenRemoveNullFromCollection_thenRemoved() { List<String> names = Lists.newArrayList("John", null, "Jane", null, "Adam", "Tom"); Collection<String> result = Collections2.filter(names, Predicates.notNull()); assertEquals(4, result.size()); assertThat(result, containsInAnyOrder("John", "Jane", "Adam", "Tom")); }
检查一个collection中的所有元素是否符合某个条件:
@Test public void whenCheckingIfAllElementsMatchACondition_thenCorrect() { List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); boolean result = Iterables.all(names, Predicates.containsPattern("n|m")); assertTrue(result); result = Iterables.all(names, Predicates.containsPattern("a")); assertFalse(result); }
下面看如何把一个list进行转换,
@Test public void whenTransformWithIterables_thenTransformed() { Function<String, Integer> function = new Function<String, Integer>() { @Override public Integer apply(String input) { return input.length(); } }; List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Iterable<Integer> result = Iterables.transform(names, function); assertThat(result, contains(4, 4, 4, 3)); }
再看结合transform和predicates结合使用的例子:
@Test public void whenCreatingAFunctionFromAPredicate_thenCorrect() { List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<Boolean> result = Collections2.transform(names, Functions.forPredicate(Predicates.containsPattern("m"))); assertEquals(4, result.size()); assertThat(result, contains(false, false, true, true)); }
在这个例子中,将一个LIST中的每一个元素进行使用Predicates.containsPattern,判断是否包含m,返回的是boolean,然后再得到的boolean值一起转换为collection
下面是两个function一起结合使用的例子:
@Test public void whenTransformingUsingComposedFunction_thenTransformed() { Function<String,Integer> f1 = new Function<String,Integer>(){ @Override public Integer apply(String input) { return input.length(); } }; Function<Integer,Boolean> f2 = new Function<Integer,Boolean>(){ @Override public Boolean apply(Integer input) { return input % 2 == 0; } }; List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<Boolean> result = Collections2.transform(names, Functions.compose(f2, f1)); assertEquals(4, result.size()); assertThat(result, contains(true, true, true, false)); }
在这个例子中,首先应用函数f1,求出每个元素的长度,然后再根据f1函数,分别返回
它们的boolean值,再转换为collection.
最后看下将filter和transform结合使用的例子:
@Test public void whenFilteringAndTransformingCollection_thenCorrect() { Predicate<String> predicate = new Predicate<String>() { @Override public boolean apply(String input) { return input.startsWith("A") || input.startsWith("T"); } }; Function<String, Integer> func = new Function<String,Integer>(){ @Override public Integer apply(String input) { return input.length(); } }; List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom"); Collection<Integer> result = FluentIterable.from(names) .filter(predicate) .transform(func) .toList(); assertEquals(2, result.size()); assertThat(result, containsInAnyOrder(4, 3)); }
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1495方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 1971前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3420info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2192import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 454https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 637public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 562https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 631https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 404https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 4681 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3048微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 566https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1788什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 918本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1272原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 815public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 626在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 889-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 716一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1860介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
包含10.0.1、11.0.2、16.0.1、18.0、19.0、20.0、25.1多个版本。 Guava是一种基于开源的Java库,其中包含谷歌正在由他们...这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。
因工作的需要,利用Guave对集合进行分组。这是个最简单的例子,希望对大家有用。
Google Guava是一个比较有趣的框架,它提供了很多有趣的的功能, google Guava 给开发者提供了如下常用功能: 集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency ...
此文档为Guava中最流行和最强大的功能,提供更具可读性和解释性的说明
http://www.cnblogs.com/snidget/archive/2013/02/05/2893344.html http://macrochen.iteye.com/blog/737058 http://code.google.com/p/guava-libraries/
使用google guava 实现定时缓存功能
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-28.0-android.jar; 赠送原API文档:guava-28.0-android-javadoc.jar; 赠送源代码:guava-28.0-android-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
赠送jar包:guava-11.0.2.jar; 赠送原API文档:guava-11.0.2-javadoc.jar; 赠送源代码:guava-11.0.2-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-28.2-jre.jar; 赠送原API文档:guava-28.2-jre-javadoc.jar; 赠送源代码:guava-28.2-jre-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-27.0.1-jre.jar; 赠送原API文档:guava-27.0.1-jre-javadoc.jar; 赠送源代码:guava-27.0.1-jre-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
集合类:集合类库是 Guava 对 JDK 集合类的扩展, 这是 Guava 项目最完善和为人所知的部分。 1. Immutable collections(不变的集合): 防御性编程, 不可修改的集合,并且提高了效率。 2. New collection ...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
guava
guava-23.0.zip guava.jar guava