针对bean list 的某个属性进行排序和比较

本文介绍了如何利用Apache Commons提供的BeanComparator简化Java中Bean的排序和最大值查找操作。通过Collections.sort()和Collections.max()结合BeanComparator,可以轻松地根据Bean的特定属性进行排序和获取最大值。

当我们需要对一个List<Object> 进行排序,排序规则为根据bean的某个属性。通过对apache commons的研究,发现里面已经提供了很好的方法:

Collections.sort(beanList, new BeanComparator("property"));

 

BeanComparator似乎是根据bean的property对象来进行比较。在BeanUtils.getProperty()方法中,它获得的属性值都给转换成String格式,两者还是不同的。

 

更正一下,这里collections是jdk自带的。 除了排序,当我们需要给出某个bean list某个属性的最大值的时候,可以采用如下方法:

Bean maxBean = (Bean)Collections.max(beanList, new BeanComparator("property");

maxBean.getProperty()  //todo

 使用这些工具可以节省我们很大的工作量。

对于以下方式创建的bean: ```java @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @Documented public @interface IgnoreUrlOrder { int value() default LOWEST_PRECEDENCE; /** * Useful constant for the highest precedence value. * @see java.lang.Integer#MIN_VALUE */ int HIGHEST_PRECEDENCE = Integer.MAX_VALUE; /** * Useful constant for the lowest precedence value. * @see java.lang.Integer#MAX_VALUE */ int LOWEST_PRECEDENCE = Integer.MIN_VALUE; } @EnableConfigurationProperties(XmlIgnoreUrlScannerProperties.class) public class DefaultIgnoreUrlAutoConfiguration { @Bean @IgnoreUrlOrder(IgnoreUrlOrder.HIGHEST_PRECEDENCE) protected IgnoreUrlRule apiIgnoreUrlRule(RequestMappingHandlerMapping requestMappingHandlerMapping){ return ApiIgnoreUrlScanner.scan(requestMappingHandlerMapping); } @Bean @IgnoreUrlOrder(IgnoreUrlOrder.HIGHEST_PRECEDENCE-1) protected IgnoreUrlRule xmlIgnoreUrlRule(XmlIgnoreUrlScannerProperties fileScanProperties) { return IgnoreUrlRule.builder() .strategy(IgnoreUrlRuleStrategy.LAST_WINS) .patterns(XmlIgnoreUrlScanner.scan(fileScanProperties).stream().map(e -> IgnoreUrlPattern.builder().url(e.get("path")).method(e.get("method")).build()).toList()) .build(); } } ``` 请通过合适的方式,在已经获取了 List<IgnoreUrlRule> 的前提下: 1. 使用spring boot 3.5.5 2. 获取每个 IgnoreUrlRule bean对象上的 IgnoreUrlOrder 注解 3. 没有使用 IgnoreUrlOrder 注解的 IgnoreUrlRule bean 使用默认值 4. 对 List<IgnoreUrlRule> 进行排序排序规则如下: 1). 优先对没有 IgnoreUrlOrder 注解的 IgnoreUrlRule 按照bean name的字典顺序从小大排序 2). 然后对有 IgnoreUrlOrder 注解的 IgnoreUrlRule 按照IgnoreUrlOrder的约定从小大排序
最新发布
09-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值