List对象集合通过对象属性进行查找
2019独角兽企业重金招聘Python工程师标准>>>
maven需要引入的JAR
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.2</version></dependency>
MyPredicate.java
import java.math.BigDecimal;import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.Predicate;public class MyPredicate implements Predicate {private String property;private Object value;public MyPredicate(String property, Object value) {this.property = property;this.value = value;}public boolean evaluate(Object object) {try {Object beanValue;if (property.indexOf(".") > 0) {beanValue = PropertyUtils.getNestedProperty(object, property);} else {beanValue = PropertyUtils.getProperty(object, property);}if (beanValue == null) {return false;}if (!value.getClass().equals(beanValue.getClass())) {throw new RuntimeException("value.class!=beanValue.class");}return myCompare(beanValue, value);} catch (Exception e) {throw new RuntimeException(e.getMessage(), e.getCause());}}private boolean myCompare(Object value, Object beanValue) {if (beanValue.getClass().equals(Integer.class)) {if ((beanValue).equals(value)) {return true;}}if (beanValue.getClass().equals(BigDecimal.class)) {if (((BigDecimal) beanValue).compareTo((BigDecimal) value) == 0) {return true;}}if (beanValue.getClass().equals(String.class)) {if (beanValue.toString().equals(value.toString())) {return true;}}if (beanValue.getClass().equals(Double.class)) {if ((beanValue).equals(value)) {return true;}} else {if (beanValue == value) {return true;}}return false;}}
测试方法
import org.andy.work.entity.UserEntity;
import org.andy.work.util.MyPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.junit.Test;
import org.apache.commons.collections.Predicate;
import java.util.ArrayList;
import java.util.List;@Testpublic void test() {List<UserEntity> list = new ArrayList<UserEntity>();UserEntity userEntity1 = new UserEntity(1, "吕布", "111");UserEntity userEntity2 = new UserEntity(2, "孙权", "222");UserEntity userEntity3 = new UserEntity(3, "吕布", "333");UserEntity userEntity4 = new UserEntity(4, "刘备", "444");UserEntity userEntity5 = new UserEntity(5, "张飞", "555");list.add(userEntity1);list.add(userEntity2);list.add(userEntity3);list.add(userEntity4);list.add(userEntity5);UserEntity userEntity6 = new UserEntity(6, "吕布", "666");Predicate isProblem = new MyPredicate("name", userEntity6.getName());List<UserEntity> result = (List<UserEntity>) CollectionUtils.select(list, isProblem);System.out.println(result.toString());}
输出打印
[UserEntity{id=1, name='吕布', password='111'}, UserEntity{id=3, name='吕布', password='333'}]
转载于:https://my.oschina.net/mcyy568/blog/626269
List对象集合通过对象属性进行查找相关推荐
- java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序
Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...
- Java提取对象集合的某些属性生成新集合
文章目录 一.准备工作 二.操作实例 有时候在对List集合操作时并不想新建一个实体类来进行转换.这就涉及到将集合中对象的每个元素投影到新属性,以此来生成一个新的集合. 一.准备工作 定义实体类Use ...
- WPF绑定(Binding)绑定对象集合修改显示属性问题
问题描述: 我打算选中列表中的字段,用文本框的值替换选中的字段. 然而在使用Binging将存放自定义类(Student)的集合绑定到ListBox上,显示的是这个类的"Name" ...
- java对汉字按照拼音首字母排序_java对象集合中某个属性的汉字进行按拼音进行排序...
在开发中,有些时候我们要对一个集合中的对象的某个属性进行按拼音排序,便于更快的找到汉字,我采用Comparator接口,在实现这个接口里定义排序规则,取得比较对象的汉字编码,并将其转换成字符串,运用S ...
- java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...
一.引子 在比较Java对象时,正常情况下,我们只能使用==或!=进行比较,而不能使用>或者<这样的运算符. 那么问题来了,开发过程中我们经常要对多个对象排序,排序必然需要比较,那么如何实 ...
- stream筛选出集合中对象属性重复值
stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb" ...
- Android中使用Room时怎样存储带list集合的对象
场景 Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...
- 对BeanCopier拷贝对象中List类型属性的思考
背景 最近开发接口过程中,使用BeanCopier拷贝对象,当对象中嵌套自定义对象类型属性的时候, 如果对象名称一致,但是对象类型不一致,拷贝的时候,该属性是会被忽略的,但是当对象中嵌套List集合类 ...
- C# 集合交、并、差、去重,对象集合交并差
关键词:C# List 集合 交集.并集.差集.去重, 对象集合. 对象.引用类型.交并差.List<T> 有时候看官网文档是最高效的学习方式! 一.简单集合 Intersect 交集, ...
最新文章
- ACMNO.36输入三个整数,按由小到大的顺序输出。
- PHP memcache实现消息队列实例
- 两个vlan之间如何通信_如何桥接两个不同的VLAN?
- android 属性动画失败,AndroidAnimationExercise
- weblogic作为linux服务器,weblogic在linux服务器上部署应用
- [转] Asp.net Session常见问题集锦
- maze_travel的隐私声明
- 小贝拉机器人是朋友_小朋友最爱的肉松美味来啦!咸香浓郁,肉松??控一定不要错过~...
- 强大的反编译软件Hopper Disassembler for Mac控制流程图详解
- Chrome的开发者工具初探
- 在sublime text 3中让.vue文件的内容变成彩色
- 微信小程序从云存储中读取图片
- 个人公众号注销方法_微信公众号注销后怎么申请 恢复公众号的方法步骤
- python查看某个函数方法具体有哪些参数怎么做
- 【无标题】上班族做什么副业赚钱?4种副业让你超过主业!
- 物流行业SaaS多租用商城系统:提升企业物流管理效率,实现高效协同
- A1003 Emergency
- 开发中遇到的bug-Property or method “xxxx“ is not defined on the instance but referenced during render.
- 运动控制系统上位机C#源码,可用于雕刻机,切割机,写字机,点胶机
- 吾家有女初长成,愿你健康快乐成长!
热门文章
- “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理
- 解决iview中</Input>标签报错的方法
- 解决IDEA中Maven加载依赖包慢的问题
- 通过ng-change选择ng-object
- \ d效率低于[0-9]
- 数据绑定如何在AngularJS中运行?
- Git最好的CRLF(回车,换行)处理策略是什么?
- 使用C#中的反射从字符串获取属性值
- html标签之间去掉空白,html – 减少两个标签之间的空白差距
- MTK:内存管理机制简单分析