`

org.apache.commons.collections : 集合对象查询

 
阅读更多
http://www.java2s.com/Code/Java/Apache-Common/PredicateChainChainingoftwoormorepredicates.htm
Bean元素对象:
package com.pandy.search4mList;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * Copyright 2009 @ jPractices v 1.0
 * @SVN URL : http://jpractices.googlecode.com
 * @author Ganesh Gowtham
 * @Homepage : http://ganesh.gowtham.googlepages.com
 */

public class Person {
    private String firstName;

    private String lastName;

    private int salary;

    public Person(String firstName, String lastName, int salary) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.salary = salary;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}


查询:存在一个List<Person>的列表,查询这个列表的元素,这个元素的firstName="ganesh"和lastName="gowtham"的元素
package com.pandy.search4mList;


import org.apache.commons.beanutils.BeanPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.PredicateUtils;
import org.apache.commons.collections.functors.EqualPredicate;

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


/**
 * Copyright 2009 @ jPractices v 1.0
 *
 * @author Ganesh Gowtham
 * @SVN URL : http://jpractices.googlecode.com
 * @Homepage : http://ganesh.gowtham.googlepages.com
 */

public class BeanPredicateChainExample {
    List<Person> personList = new ArrayList<Person>();

    /**
     * Basic method which creates the list of person object's
     */
    void setUpData() {
        personList.add(new Person("ganesh", "gowtham", 35000));
        personList.add(new Person("britney", "spears", 45000));
        personList.add(new Person("ganesh", "gowtham", 36000));
        personList.add(new Person("ganesh", "dummy", 45000));
    }

    /**
     * Here we are adding multiple predicate
     * filters the collection so that final person object will contain
     * firstName as "ganesh" & lastName as "gowtham"
     */
    void filterDataUsingMultipleCriteria() {
        EqualPredicate firstNameEqlPredicate = new EqualPredicate("ganesh");
        BeanPredicate firtsNameBeanPredicate = new BeanPredicate("firstName", firstNameEqlPredicate);
        EqualPredicate lastNameEqlPredicate2 = new EqualPredicate("gowtham");
        BeanPredicate lastNameBeanPredicate2 = new BeanPredicate("lastName", lastNameEqlPredicate2);
        Predicate[] allPredicateArray = {firtsNameBeanPredicate, lastNameBeanPredicate2};
        Predicate allPredicate = PredicateUtils.allPredicate(allPredicateArray);
        Collection<Person> filteredCollection = CollectionUtils.select(personList, allPredicate);

        for (Person person : filteredCollection) {
            System.out.println(person);
        }
    }

    public static void main(String[] args) {
        BeanPredicateChainExample chainExample = new BeanPredicateChainExample();
        chainExample.setUpData();
        chainExample.filterDataUsingMultipleCriteria();
    }
}



Map元素对象查询:存在一个List<Map>的列表,查询这个列表的元素,这个元素的firstName="ganesh"和lastName="gowtham"的元素
package com.pandy.search4mList;


import org.apache.commons.beanutils.BeanPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.PredicateUtils;
import org.apache.commons.collections.functors.EqualPredicate;

import java.util.*;


/**
 * Copyright 2009 @ jPractices v 1.0
 *
 * @author Ganesh Gowtham
 * @SVN URL : http://jpractices.googlecode.com
 * @Homepage : http://ganesh.gowtham.googlepages.com
 */

public class MapPredicateChainExample {
    List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

    /**
     * Basic method which creates the list of person object's
     */
    void setUpData() {
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("firstName","ganesh");
        map.put("lastName","gowtham");
        map.put("salary",35000);
        list.add(map);

        map = new HashMap<String,Object>();
        map.put("firstName","britney");
        map.put("lastName","spears");
        map.put("salary",45000);
        list.add(map);

        map = new HashMap<String,Object>();
        map.put("firstName","ganesh");
        map.put("lastName","gowtham");
        map.put("salary",36000);
        list.add(map);

        map = new HashMap<String,Object>();
        map.put("firstName","ganesh");
        map.put("lastName","dummy");
        map.put("salary",45000);
        list.add(map);

    }

    /**
     * Here we are adding multiple predicate
     * filters the collection so that final person object will contain
     * firstName as "ganesh" & lastName as "gowtham"
     */
    void filterDataUsingMultipleCriteria() {
        EqualPredicate firstNameEqlPredicate = new EqualPredicate("ganesh");
        BeanPredicate firtsNameBeanPredicate = new BeanPredicate("firstName", firstNameEqlPredicate);
        EqualPredicate lastNameEqlPredicate2 = new EqualPredicate("gowtham");
        BeanPredicate lastNameBeanPredicate2 = new BeanPredicate("lastName", lastNameEqlPredicate2);
        Predicate[] allPredicateArray = {firtsNameBeanPredicate, lastNameBeanPredicate2};
        Predicate allPredicate = PredicateUtils.allPredicate(allPredicateArray);
        Collection<Map<String,Object>> filteredCollection = CollectionUtils.select(list, allPredicate);

        for (Map<String,Object> person : filteredCollection) {
            System.out.println(person);
        }
    }

    public static void main(String[] args) {
        MapPredicateChainExample chainExample = new MapPredicateChainExample();
        chainExample.setUpData();
        chainExample.filterDataUsingMultipleCriteria();
    }
}

分享到:
评论

相关推荐

    org.apache.commons jar

    "org.apache.commons jar" 指的是这个项目中相关组件的集合,通常包含多个模块,每个模块专注于特定的编程任务。 1. **Apache Commons Lang**: 这个模块提供了许多高级字符串处理、日期和时间操作、数学计算以及...

    commons-collections4-4.1.jar

    在处理Excel2007(.xlsx)文件时,可能会遇到`org.apache.commons.collections`找不到的错误,这个问题通常是由于缺少或版本不兼容的Apache Commons Collections库导致的。本文将深入探讨如何利用`commons-...

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource解决方案

    1. **commons-collections-3.2.1.jar**:这是Apache Commons Collections库,提供了许多实用的集合框架扩展,包括一些辅助类和算法,DBCP依赖于这个库来执行一些功能。 2. **commons-dbcp-1.2.1.jar**:这是Apache ...

    org.apache.commons 的 jar 包 源码

    3. **Commons Collections**: 提供了丰富的集合框架扩展,包括更强大的列表、映射和队列实现,以及各种集合操作工具。 4. **Commons BeanUtils**: 提供了基于JavaBeans属性的操作工具,简化了对象之间的属性复制和...

    Apache Commons Collections

    Apache Commons Collections是Apache软件基金会开发的一个Java库,它提供了对集合框架的扩展和增强功能,极大地丰富了Java的集合操作。这个库包含了多种实用的数据结构、算法和集合操作工具,可以提升开发效率并优化...

    org.apache.commons 全部包

    在这个压缩包中,你可能会找到如 Commons Lang、Commons IO、Commons Collections、Commons BeanUtils 等多个子项目的集合。 1. **Commons Lang**:这是 Apache Commons 中最常用的包之一,提供了大量的 Java 语言...

    org.apache.commons.collections-3.2.1.jar.zip

    在本次讨论中,我们将深入探讨"org.apache.commons.collections-3.2.1.jar"这个特定版本的库,了解它所包含的关键组件和使用场景。 Apache Commons Collections 3.2.1版是一个稳定且广泛使用的版本,它包含了丰富的...

    org.apache.commons jar包

    3. **Commons Collections**:提供了对Java集合框架的增强,包括新的集合实现、算法、迭代器工厂等。 4. **Commons BeanUtils**:简化了JavaBeans对象的操作,提供了属性复制、类型转换等便利方法。 5. **Commons ...

    org.apache.commons 系列的 JAR集合

    org.apache.commons 系列的 JAR集合,用以解决异常,包含内容如下: commons-cli-1.0 commons-codec-1.3 commons-collections-3.1 commons-dbcp commons-digester commons-discovery-0.2 commons-fileupload-1.2.1 ...

    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常

    `org.apache.commons.collections.Transformer` 是Apache Commons Collections库中的一个接口,它定义了一个将输入对象转换为输出对象的策略。这个接口在处理集合数据时非常有用,可以用来动态地转换集合中的每个...

    commons-beanutils、commons-collections、commons-collections等常用jar 包下载

    2. **Apache Commons Collections** - `commons-collections-3.2.2.jar` 这个库扩展了Java集合框架,提供了许多额外的数据结构和算法。它包含: - 高级集合实现:如双向队列、堆栈、映射、多重集(Multiset)等。 ...

    org.apache.commons

    3. **Commons Collections**: 提供了对Java集合框架的增强和补充,如集合的转换、排序、过滤等。它还包括一些特殊类型的集合,如双向队列、映射集等。 4. **Commons BeanUtils**: 这个模块简化了JavaBean对象之间的...

    org.apache.commons包

    2. **Commons Collections**: 这个模块提供了对Java集合框架的增强,包括新的集合实现、迭代器工厂、比较器、转换器等。它使得对集合的操作更加灵活和高效。 3. **Commons IO**: 专注于输入/输出操作,提供了许多...

    org.apache.commons jar包大全

    标题“org.apache.commons jar包大全”表明这是一个包含所有Apache Commons项目中jar包的集合。这些jar包通常是开发者在进行Java开发时,为了增强功能或简化代码而引入的外部依赖。Apache Commons项目下的jar包有...

    commons-collections-3.2.2-bin.zip

    总结起来,Apache Commons Collections 3.2.2是Java开发中的重要辅助工具,它提供的丰富功能和强大扩展性,使得开发者能够更加高效地处理集合对象,提升开发效率。无论是新手还是经验丰富的开发者,都应该熟悉并掌握...

    org.apache.commons 所有jar包 非常实用

    在"org.apache.commons 所有jar包 非常实用"这个压缩包中,你将找到一系列与 Apache Commons 相关的 jar 包,这些 jar 包包含了多种模块,每个模块都有其特定的用途。 1. **Commons Lang**: 这个模块提供了一些高级...

    commons-collections-3.2.1.jar

    《Apache Commons Collections 3.2.1:Java集合框架的强大扩展》 Apache Commons Collections是Apache软件基金会的一个项目,它提供了一系列强大的、用于处理Java集合框架的工具类和算法。在这个项目中,`commons-...

    commons-collections-3.2.jar

    Apache Commons Collections是Java开发中常用的一个开源库,它为Java集合框架提供了大量的实用工具类和扩展。"commons-collections-3.2.jar"是该库的版本3.2的实现,它包含了一系列高效、实用且功能丰富的数据结构和...

Global site tag (gtag.js) - Google Analytics