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对象集合通过对象属性进行查找相关推荐

  1. java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序

    Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...

  2. Java提取对象集合的某些属性生成新集合

    文章目录 一.准备工作 二.操作实例 有时候在对List集合操作时并不想新建一个实体类来进行转换.这就涉及到将集合中对象的每个元素投影到新属性,以此来生成一个新的集合. 一.准备工作 定义实体类Use ...

  3. WPF绑定(Binding)绑定对象集合修改显示属性问题

    问题描述: 我打算选中列表中的字段,用文本框的值替换选中的字段. 然而在使用Binging将存放自定义类(Student)的集合绑定到ListBox上,显示的是这个类的"Name" ...

  4. java对汉字按照拼音首字母排序_java对象集合中某个属性的汉字进行按拼音进行排序...

    在开发中,有些时候我们要对一个集合中的对象的某个属性进行按拼音排序,便于更快的找到汉字,我采用Comparator接口,在实现这个接口里定义排序规则,取得比较对象的汉字编码,并将其转换成字符串,运用S ...

  5. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...

    一.引子 在比较Java对象时,正常情况下,我们只能使用==或!=进行比较,而不能使用>或者<这样的运算符. 那么问题来了,开发过程中我们经常要对多个对象排序,排序必然需要比较,那么如何实 ...

  6. stream筛选出集合中对象属性重复值

    stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb" ...

  7. Android中使用Room时怎样存储带list集合的对象

    场景 Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  8. 对BeanCopier拷贝对象中List类型属性的思考

    背景 最近开发接口过程中,使用BeanCopier拷贝对象,当对象中嵌套自定义对象类型属性的时候, 如果对象名称一致,但是对象类型不一致,拷贝的时候,该属性是会被忽略的,但是当对象中嵌套List集合类 ...

  9. C# 集合交、并、差、去重,对象集合交并差

    关键词:C#  List 集合 交集.并集.差集.去重, 对象集合. 对象.引用类型.交并差.List<T> 有时候看官网文档是最高效的学习方式! 一.简单集合 Intersect 交集, ...

最新文章

  1. ACMNO.36输入三个整数,按由小到大的顺序输出。
  2. PHP memcache实现消息队列实例
  3. 两个vlan之间如何通信_如何桥接两个不同的VLAN?
  4. android 属性动画失败,AndroidAnimationExercise
  5. weblogic作为linux服务器,weblogic在linux服务器上部署应用
  6. [转] Asp.net Session常见问题集锦
  7. maze_travel的隐私声明
  8. 小贝拉机器人是朋友_小朋友最爱的肉松美味来啦!咸香浓郁,肉松??控一定不要错过~...
  9. 强大的反编译软件Hopper Disassembler for Mac控制流程图详解
  10. Chrome的开发者工具初探
  11. 在sublime text 3中让.vue文件的内容变成彩色
  12. 微信小程序从云存储中读取图片
  13. 个人公众号注销方法_微信公众号注销后怎么申请 恢复公众号的方法步骤
  14. python查看某个函数方法具体有哪些参数怎么做
  15. 【无标题】上班族做什么副业赚钱?4种副业让你超过主业!
  16. 物流行业SaaS多租用商城系统:提升企业物流管理效率,实现高效协同
  17. A1003 Emergency
  18. 开发中遇到的bug-Property or method “xxxx“ is not defined on the instance but referenced during render.
  19. 运动控制系统上位机C#源码,可用于雕刻机,切割机,写字机,点胶机
  20. 吾家有女初长成,愿你健康快乐成长!

热门文章

  1. “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理
  2. 解决iview中</Input>标签报错的方法
  3. 解决IDEA中Maven加载依赖包慢的问题
  4. 通过ng-change选择ng-object
  5. \ d效率低于[0-9]
  6. 数据绑定如何在AngularJS中运行?
  7. Git最好的CRLF(回车,换行)处理策略是什么?
  8. 使用C#中的反射从字符串获取属性值
  9. html标签之间去掉空白,html – 减少两个标签之间的空白差距
  10. MTK:内存管理机制简单分析