CollectionUtils.select用法
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用法的更多相关文章
- html select用法总结
本文将介绍select 原生的常用方法,这些都是经过测试,兼容ie6到ie10,及chrome,火狐等,也就是说大部分浏览器都兼容.如果大家发现有不兼容的情况,可以跟我留言. 我们对基本的用法了如指掌 ...
- 网络通信 --> select()用法
select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...
- python+selenium七:下拉框、选项框、select用法
# from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimpo ...
- golang学习之select用法
早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...
- CollectionUtils.select 集合筛选
import org.apache.commons.collections.CollectionUtils;import org.apache.commons.collections.Predicat ...
- 数据库Oracle的select用法(部分)
Oracle的select用法(部分): 1.查询所有: select * from employees; 2.加上where子句:用选择限制行 select * from employees whe ...
- 每天玩转3分钟 MyBatis-Plus - 6. select 用法
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...
- select用法&原理详解(源码剖析)(转)
今天遇到了在select()前后fd_set的变化问题,查了好久终于找到一个有用的帖子了,很赞,很详细!!原文链接如下: select用法&原理详解(源码剖析) 我的问题是: 如下图示:在se ...
- select用法
每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<select class="selector"></select&g ...
随机推荐
- Flask源码之:路由加载
路由加载整体思路: 1. 将 url = /index 和 methods = [GET,POST] 和 endpoint = "index"封装到Rule对象 2. 将Ru ...
- Python中使用@的理解
Python函数中使用@ 稍提一下的基础 fun 和fun()的区别 以一段代码为例: def fun(): print('fun') return None a = fun() #fun函数并将返回 ...
- logstash解析tomcat的catalina.out日志字段
filter { mutate { remove_field => ["@version","prospector","input", ...
- RabbitMQ Policy的使用
RabbitMQ作为最流行的MQ中间件之一,广泛使用在各类系统中,今天我们就来讨论一下如何通过Policies给RabbitMQ中已经创建的Queue添加属性和参数. Policise 的作用 通常来 ...
- mysql执行出错:Table 'k_user' is read only
执行sql的时候发现出错 Table 'k_user' is read only 1.给mysql权限 chmod 777 mysql 2.执行一下命令 mysqladmin -uroot -p re ...
- 【开发笔记】- 在MySQL中 root账户被锁定怎么办
MySQL的账户被锁定怎么办? 用Navicat连接数据库报错如下: Access denied for user 'root'@'localhost' (using password:YES) 原因 ...
- MapReduce1.x与MapReduce2.x差异
一.MapReduce1.x简介 1.图解 2.JobTracker 主节点,单点,负责调度所有的作用和监控整个集群的资源负载. 3.TaskTracker 从节点,自身节点资源管理和JobTrack ...
- mariadb远程授权问题
安装mariadb后,使用远程连接时 密码没有问题 但是每次打开都报这个错误: 这个错误是在进行远程连接的时候密码正确, 但是,进行远程授权的时候授权密码错误. 在数据库中执行下述代码即可: GRAN ...
- Docker搭建私用仓库
搭建私有仓库 # 1.查找registry,官方的私用仓库镜像 docker search registry # 2.下载私有仓库镜像 docker pull registry # 3.创建并后台运行 ...
- MySQL优化整理
一.SQL优化 1.show status查看各种sql的执行频率 SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果. 显示当前sessi ...