zoukankan      html  css  js  c++  java
  • guava-集合使用

    之前给上游提供批量插入的接口时,遇到一个问题,需要将dto批量转换成data。
    用apache、spring提供的单例转换需要循环,见http://www.cnblogs.com/kivi170806/p/8007057.html。这时guava就排上用场啦。
    源码如下

    public static <F, T> List<T> transform(List<F> fromList, Function<? super F, ? extends T> function) {
            return (List)(fromList instanceof RandomAccess?new Lists.TransformingRandomAccessList(fromList, function):new Lists.TransformingSequentialList(fromList, function));
        }
    

    demo如下

    List<Entity> entities = Lists.transform(dtos, new Function<DTO, Entity>() {
                @Override
                public Entity apply(DTO dto) {
                    Entity entity = new Entity();
                    BeanCopier beanCopier = BeanCopier.create(DTO.class, Entity.class, false);
                    beanCopier.copy(dto, entity, null);
                    return entity;
                }
            });
    

    解决完这个问题之后,需要将转换后的进行过滤。这里遇到了java.util.ConcurrentModificationException的问题。这里可以用guava的filter。

               //filter这段逻辑是将过滤掉md5相同的entity.
            if (CollectionUtils.isNotEmpty(falledPromoEntities)) {
                promoEntities = newArrayList(filter(promoEntities, new Predicate<Entity>() {
                    @Override
                    public boolean apply(@Nullable Entity entity) {
                        for (Entity promoEntity : falledPromoEntities) {
                            if (entity.getMD5().equals(promoEntity.getMD5())) {
                                return false;
                            }
                        }
                        return true;
                    }
                }));
            }
    
  • 相关阅读:
    jmeter学习笔记(十一)定时器
    jmter学习笔记(十)断言
    jmeter学习笔记(九)
    jmeter学习笔记(八-1)
    jmeter学习笔记(八-2)
    jmeter上传发送文件学习笔记
    jmeter学习笔记(七)
    jmeter学习笔记(六)
    jmeter学习笔记(四)
    jmeter学习笔记(五)
  • 原文地址:https://www.cnblogs.com/kivi170806/p/8007108.html
Copyright © 2011-2022 走看看