正常情况下,我们声明一个List需要如下代码

  1. List<String> list = new ArrayList<>();
  2. list.add("AAA");
  3. list.add("BBB");
  4. list.add("CCC");

使用Google Guava提供的Lists类声明就方便很多,代码如下

  1. package com.google.common.collect; //导入jar包
  1. List<String> list = Lists.newArrayList("AAA", "BBB", "CCC");

在实际开发中,我们经常遇到需要处理集合中对象的情况,比如返回一个集合中User类的Age大于18的用户列表

  1. package com.rrq.guava;
  2.  
  3. import com.google.common.collect.Collections2;
  4. import com.google.common.collect.Lists;
  5.  
  6. import java.util.Collection;
  7. import java.util.List;
  8.  
  9. public class Demo02 {
  10. public static void main(String[] args) {
  11.  
  12. //获取用户集合
  13. List<User> list = GetUserList();
  14.  
  15. //使用filter方法过滤条件是Age大于18的数据
  16. Collection<User> result = Collections2.filter(list, x -> x.getAge() > );
  17.  
  18. for (User item : result) {
  19. System.out.println(String.format("%s=%d", item.getName(), item.getAge()));
  20. }
  21. }
  22.  
  23. //初始化用户列表
  24. public static List<User> GetUserList() {
  25.  
  26. User user1 = new User();
  27. user1.setName("brazel");
  28. user1.setAge();
  29.  
  30. User user2 = new User();
  31. user2.setName("AAA");
  32. user2.setAge();
  33.  
  34. User user3 = new User();
  35. user3.setName("BBB");
  36. user3.setAge();
  37.  
  38. User user4 = new User();
  39. user4.setName("CCC");
  40. user4.setAge();
  41.  
  42. List<User> list = Lists.newArrayList();
  43. list.add(user1);
  44. list.add(user2);
  45. list.add(user3);
  46. list.add(user4);
  47.  
  48. return list;
  49. }
  50. }
  51.  
  52. class User {
  53. private String Name;
  54.  
  55. private int Age;
  56.  
  57. /***
  58. * 获取用户名
  59. *
  60. * @return
  61. */
  62. public String getName() {
  63. return Name;
  64. }
  65.  
  66. /***
  67. * 设置用户名
  68. *
  69. * @return
  70. */
  71. public void setName(String name) {
  72. Name = name;
  73. }
  74.  
  75. /***
  76. * 获取年龄
  77. ****/
  78. public int getAge() {
  79. return Age;
  80. }
  81.  
  82. /**
  83. * 设置年龄
  84. **/
  85. public void setAge(int age) {
  86. Age = age;
  87. }
  88. }

输出结果:

BBB=20
CCC=22

使用Guava提供的filter过滤集合的更多相关文章

  1. java8的stream系列教程之filter过滤集合的一些属性

    贴代码 List<Student> lists = new ArrayList<>(); Student student = new Student(); student.se ...

  2. 使用filter方法过滤集合元素

    文章转自https://my.oschina.net/nenusoul/blog/658238 Problem 你想要筛选出集合中的一些元素形成一个新的集合,这些元素都是满足你的筛选条件的. Solu ...

  3. laravel的filter()方法的使用 (方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容)

    filter 方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容: $collection = collect([1, 2, 3, 4]); $filtered = $collec ...

  4. Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...

  5. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  6. java代码之美(4)---guava之Immutable(不可变)集合

    Immutable(不可变)集合 一.概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开.Collections是jdk提供的一个工具类 ...

  7. java代码(4)---guava之Immutable(不可变)集合

    Immutable(不可变)集合   一,概述 guava是google的一个库,弥补了java语音的很多方面的不足,很多在java8中已有实现,暂时不展开,Collections是jdk提供的一个工 ...

  8. 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值

    不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...

  9. Android利用Filter过滤数据

    MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; imp ...

随机推荐

  1. 如何使用Nginx对抗DDoS攻击?

    时不时的就有客户会被DDoS一下.很多时候攻击很简单也容易封堵,但是攻击的目标是应用的时候就更难防御.在这里云端卫士介绍一下使用Nginx作为代理过滤器来封堵一些这种攻击. Apache DDoS攻击 ...

  2. css大小单位px em rem的转换和详解

    css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...

  3. 《photon中配置lite的相关问题》

    前几天在学习photon的时候发现了一个问题: 无论如何都找不到Lite文件夹,我是一个新手这也是写给那些新上手的朋友: 首先下载SDK以后配置完成后无论如何都找不到Lite文件夹和相关的Lite.d ...

  4. js中创建数组的方法

    1.声明或创建一个不指定长度的数组(Array)的方式为: 如:var arrayObj = new Array(); 2.声明或创建一个数组并指定长度的数组(Array)的方式为: 如:var ar ...

  5. Struts1 action重定向跳转 带参数

    ActionForward forward = new ActionForward("kmRentalMain.do?method=view&fdId="+id);forw ...

  6. Win7 64位 VS2015环境编译NanoVG

    书接上回,Cairo编译好使用后,发现简单的每帧画100条随机线段就卡得不行,装了个gooreplacer( http://liujiacai.net/gooreplacer/ )上stackover ...

  7. Python发布包到Pypi

    本地打包:python setup.py sdist 上传Pypi:python setup.py register sdist upload

  8. padding(内边距)、margin(外边距)、border(边框)

    元素的 padding 控制元素内容 content和元素边框 border 之间的距离. 元素的外边距 margin 控制元素边框 border 和元素实际所占空间的距离,如果你将一个元素的 mar ...

  9. Visual Studio C# IntelliSense not automatically displaying

    Options -> Text Editor -> C# -> IntelliSense

  10. C#自旋的艺术

    CODE1: while (status == ServerStatus.Started) { if (*TaskLocker > 0) { for (int i = 0; i != *Leve ...