使用Guava提供的filter过滤集合

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

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

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

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

 

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

package com.rrq.guava;

import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;

import java.util.Collection;
import java.util.List;

public class Demo02 {
    public static void main(String[] args) {

        //获取用户集合
        List<User> list = GetUserList();

        //使用filter方法过滤条件是Age大于18的数据
        Collection<User> result = Collections2.filter(list, x -> x.getAge() > 18);

        for (User item : result) {
            System.out.println(String.format("%s=%d", item.getName(), item.getAge()));
        }
    }

    //初始化用户列表
    public static List<User> GetUserList() {

        User user1 = new User();
        user1.setName("brazel");
        user1.setAge(18);

        User user2 = new User();
        user2.setName("AAA");
        user2.setAge(11);

        User user3 = new User();
        user3.setName("BBB");
        user3.setAge(20);

        User user4 = new User();
        user4.setName("CCC");
        user4.setAge(22);

        List<User> list = Lists.newArrayList();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);

        return list;
    }
}

class User {
    private String Name;

    private int Age;

    /***
     * 获取用户名
     *
     * @return
     */
    public String getName() {
        return Name;
    }

    /***
     * 设置用户名
     *
     * @return
     */
    public void setName(String name) {
        Name = name;
    }

    /***
     * 获取年龄
     ****/
    public int getAge() {
        return Age;
    }

    /**
     * 设置年龄
     **/
    public void setAge(int age) {
        Age = age;
    }
}

输出结果:

BBB=20
CCC=22

 

时间: 2024-09-27 02:30:00

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

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

原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟的部分之一. 我们用相对直观的方式把工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collections2:不要和jav

filter过滤输出的问题

问题描述 filter过滤输出的问题 import java.io.CharArrayWriter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; public class HttpCharacterResponseWrapper

c# filter 过滤文件-Filter过滤文件格式失败,菜鸟求解

问题描述 Filter过滤文件格式失败,菜鸟求解 fs.Filter = ""文本文件(*.txt)|*.txt|S1P文件(*.S1P)|*.S1P""我这样写为什么触发不了事件啊?fsFaild.Filter = ""*.txt"";这样就能过滤txt的文件,并触发事件

请教一个问题,获取到一个DataSet,使用Filter过滤其中的数据

问题描述 获取到一个DataSet,使用Filter过滤其中的数据,但是Filter中有单引号,结果我下面的语句就不能调试通过,请大家帮忙解决.stringfilter=string.Format("Label='{0}'",positionName);DataRow[]rows=DataSet1.Select(filter); 解决方案 解决方案二:DataSet不知道怎么过滤的:DataTable过滤可以这样写:DataRow[]rows=DataTable1.Select(&qu

javascipt:filter过滤介绍及使用_javascript技巧

javascipt : filter  过滤 var List = sizes.filter(function (size) { return size.id == 12; }); sizes = [ {id : 10,,stock:130},{id : 11,stock:120},{id : 12,stock:100} ] filter是new一个新的array,然后给他过滤后的对象,最后var list 起来 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关

详解Android中Intent对象与Intent Filter过滤匹配过程_Android

如果对Intent不是特别了解,可以参见博文<详解Android中Intent的使用方法>,该文对本文要使用的action.category以及data都进行了详细介绍.如果想了解在开发中常见Intent的使用,可以参见<Android中Intent习惯用法>. 本文内容有点长,希望大家可以耐心读完. 本文在描述组件在manifest中注册的Intent Filter过滤器时,统一用intent-filter表示. 一.概述 我们知道,Intent是分两种的:显式Intent和隐式

使用Response.Filter过滤非法词汇

一般信息发布网站,论坛等均具有实现非法词汇过滤功能,即当用户录入非法词汇时,进行替换,使 其无法显示到页面上,针对此种功能,通常采用的时,在读取时,在读到非法词汇后,进行替换.另一种 解决方案是在输出时过滤掉非常词汇,优点是只要写一次就好了,可以过滤整站的非法词汇,缺点是,非 法词汇仍然存入到了数据库中,呵呵,大家可以有针对性的选择,本例用的是后者,起因在于当初没有做 此功能,后来需要添加,这时又不想改原来代码,所以就想了这个办法,主要是采用了 HttpResponse.Filter属性来处理.

自定义Filter过滤静态资源

在springMVC中,可以通过配置来过滤静态资源, 也可以在web.xml中进行配置,通过自定义Filter来实现. web.xml配置如下. <filter> <filter-name>securityFilter</filter-name> <filter-class>com.wswhr.SecurityFilter</filter-class> <init-param> <param-name>ignores<

filter过滤-Filter过滤器的重定向问题

问题描述 Filter过滤器的重定向问题 FirstFilter过滤first.jsp 和second.jsp...通过重定向到second.jsp... 我不明白这个死循环为什么还能执行 System.out.println("doFilter----first---end");??不是先执行 System.out.println("doFilter........first.");之后就重定向到second.jsp,然后在执行second.jsp的过滤器,即一直