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

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.Transformer;

public class UserTest {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

List<User> userList = new ArrayList<User>();

User user0 = new User();
        user0.setPassword("1111");
        user0.setUsername("haha");
        userList.add(user0);

User user1 = new User();
        user1.setPassword("1111");
        user1.setUsername("heihei");
        userList.add(user1);

User user2 = new User();
        user2.setPassword("2222");
        user2.setUsername("lala");
        userList.add(user2);

// 这是在演示:集合内取出对象,取出的对象的属性是特定值
        // 这个方法的正向概念上当然是取出符合要求的对象集合,
        // 但反向概念上,也就是删除集合内符合要求的对象,只要在evaluate方法的返回值上加个感叹号即可。
        // .................................................
        // 如果不用这个方法来达到删除效果,我们会怎么样做呢?
        // 估计是使用userList.remove(Object o),使用这个方法呢,就要重写User的equals方法,
        // 并且equals里面只定义password的比对,然后在此处new一
        // 个User并且设置进password为"1111",然后传入此方法。
        // 这样做也可以达到效果,但影响长远,影响了整个User
        // 对象整个的使用,并且因为此处的依赖原因,equals方法将不能再做任何修改
        // 而在项目中,如果后来者不知道此处对equals的依赖而改了equals,那你就要悲剧。
        userList = (List<User>) CollectionUtils.select(userList,
                new Predicate() {
                    public boolean evaluate(Object arg0) {
                        User u = (User) arg0;
                        return "1111".equals(u.getPassword());
                    }
                });

// ....现在,userList中指剩下user0,user1了,咱继续

// 这是在演示:集合内取出对象某属性值的集合
        // 也是集合操作很实用的方法,要不还要自己循环集合去取某属性值,然后add进事先new的list中,麻烦
        List<String> userNameList = (List<String>) CollectionUtils.collect(
                userList, new Transformer() {
                    public Object transform(Object arg0) {
                        User u = (User) arg0;
                        return u.getUsername();
                    }
                });

// 好了,如果没错,那userNameList就是"haha"和"heihei"2个字符串了,瞧瞧效果吧
        System.out.println(userNameList);

}
}

CollectionUtils.select用法的更多相关文章

  1. html select用法总结

    本文将介绍select 原生的常用方法,这些都是经过测试,兼容ie6到ie10,及chrome,火狐等,也就是说大部分浏览器都兼容.如果大家发现有不兼容的情况,可以跟我留言. 我们对基本的用法了如指掌 ...

  2. 网络通信 --> select()用法

    select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...

  3. python+selenium七:下拉框、选项框、select用法

    # from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimpo ...

  4. golang学习之select用法

    早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...

  5. CollectionUtils.select 集合筛选

    import org.apache.commons.collections.CollectionUtils;import org.apache.commons.collections.Predicat ...

  6. 数据库Oracle的select用法(部分)

    Oracle的select用法(部分): 1.查询所有: select * from employees; 2.加上where子句:用选择限制行 select * from employees whe ...

  7. 每天玩转3分钟 MyBatis-Plus - 6. select 用法

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  8. select用法&原理详解(源码剖析)(转)

    今天遇到了在select()前后fd_set的变化问题,查了好久终于找到一个有用的帖子了,很赞,很详细!!原文链接如下: select用法&原理详解(源码剖析) 我的问题是: 如下图示:在se ...

  9. select用法

    每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<select class="selector"></select&g ...

随机推荐

  1. Akka-CQRS(10)- gRPC on SSL/TLS 安全连接

    使用gRPC作为云平台和移动前端的连接方式,网络安全应该是必须考虑的一个重点.gRPC是支持ssl/tls安全通讯机制的.用了一个周末来研究具体使用方法,实际上是一个周末的挖坑填坑过程.把这次经历记录 ...

  2. 客开监控(BE/UI/BP)插件停用与启用

    1.单据界面右键属性,获取当前客开监控页面URL连接:http://172.16.168.15/U9/erp/display.aspx?lnk=UFSoft.UBF.Cust.CustManager& ...

  3. 【题解】Luogu P5360 [SDOI2019]世界地图

    原题传送门 每次查询的实际就是将地图的一个前缀和一个后缀合并后的图的最小生成树边权和 我们要预处理每个前缀和后缀的最小生成树 实际求前缀和(后缀和)的过程珂以理解为上一个前缀和这一列的最小生成树进行合 ...

  4. yii框架中的各种小问题

    1.默认路径的修改 2.分页的做法

  5. C++字符串相互转换

    转自cs_wu原文 C++ char*,const char*,string的相互转换 1. string转const char* string s ="abc"; const c ...

  6. nodeJS微信JSDK 配置

    nodeJS微信JSDK 配置 一.微信公众平台申请一个测试公众号 二.配置nodeJS 使用express框架搭建服务器 微信生成签名步骤: 1.获取token 2.通过token,获取jsapi_ ...

  7. Oracle 12cR1 RAC集群安装(二)--使用图形界面安装

    Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...

  8. chattr和lsattr命令

    原文 在一个技术群上看到这么一个问题: 问题出现在服务器被黑后!特意出记录下问题的解决方法. 由于被黑了,所以我们的很多命令将会出现使用不正常等问题,而这些问题大多是给人家添加或删除了某些权限所致.比 ...

  9. 谈谈OAuth1,OAuth2异同

    ##一.写在前面在收集资料时,我查询和学习了许多介绍OAuth的文章,这些文章有好有坏,但大多是从个例出发.因此我想从官方文档出发,结合在stackoverflow上的一些讨论,一并整理一下.整理的内 ...

  10. 17,Flask-admin后台管理系统总结

    导入包 from flask_admin import Admin,BaseView,expose,AdminIndexView from flask_admin.contrib.sqla impor ...