Java根据类属性值从一个集合中找到和该属性相等的对象

方法

使用common-utils包提供的CollectionUtilsBeanPropertyValueEqualsPredicate

比如找id属性值为9587的用户

Object obj = CollectionUtils.find(UserList.get(), 
new BeanPropertyValueEqualsPredicate("id", "9587"));
if(obj == null){
    log.info("not found");
}else{
    //do your thing
}

find方法实现的大概思路

public static <T> T findElementByPropertyValue(List<T> list, String propertyName, Object value) throws Exception {
    if(list == null || list.isEmpty()) {
        return null;
    }
    PropertyDescriptor pd = new PropertyDescriptor(propertyName, list.get(0).getClass());
    for (T t : list) {
        Object obj = pd.getReadMethod().invoke(t);
        if(StringUtils.equals(String.valueOf(value), String.valueOf(obj))) {
            return t;
        }
    }
    return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值