精华内容
下载资源
问答
  • a,b为对象 BeanUtils.copyProperties(a, b); 1,BeanUtils是org.springframework....2,BeanUtils是org.apache.commons.beanutils.BeanUtils,b拷贝到a 然后再修改拷贝过的对象的值,就和原来的值没有关系了 ...

    a,b为对象

    BeanUtils.copyProperties(a,  b);

    1,BeanUtils是org.springframework.beans.BeanUtils, a拷贝到b

    2,BeanUtils是org.apache.commons.beanutils.BeanUtils,b拷贝到a

    然后再修改拷贝过的对象的值,就和原来的值没有关系了

    展开全文
  • 经常会需要遍历对象 List 对某一字段重新赋值,使用 Java8 stream 或者 List forEach 操作实现非常便捷。 一、Java8 stream 操作 示例代码如下: objectList = objectList .stream().map(object -> { Object ...

    经常会需要遍历对象 List 对某一字段重新赋值,使用 Java8 stream 或者 List forEach 操作实现非常便捷。

    一、Java8 stream 操作

    示例代码如下:

    
    objectList = objectList .stream().map(object -> {
                 object .setVar("Value");
                 return object ;
                 }).collect(Collectors.toList());
    

    二、List forEach 操作

    示例代码如下:

    objectList.forEach(object -> object.setVar("Value"));
    

    将 Object 替换为需要提取的对象即可。

    遍历对象 List 对某一字段重新赋值,使用 List forEach 操作更加便捷。

    展开全文
  • 经常会需要遍历对象 List 对某一字段重新赋值,使用 Java8 stream 或者 List foreach 操作实现非常便捷。 一、Java8 stream 操作 示例代码如下: objectList = objectList .stream().map(object -> { Object ...

    经常会需要遍历对象 List 对某一字段重新赋值,使用 Java8 stream 或者 List forEach 操作实现非常便捷。

    一、Java8 stream 操作

    示例代码如下:

    objectList = objectList .stream().map(object -> {
                 Object objectNew = new Object();
                 BeanUtils.copyProperties(object, objectNew);
                 objectNew.setVar("Value");
                 return objectNew;
                 }).collect(Collectors.toList());
    

    二、List forEach 操作

    示例代码如下:

    objectList.forEach(object -> object.setVar("Value"));
    

    将 Object 替换为需要提取的对象即可。

    遍历对象 List 对某一字段重新赋值,使用 List forEach 操作更加便捷。

    查看更多常用流式操作 Java8 stream 常用操作汇总

    展开全文
  • 对Users集合进行for循环遍历,每次循环用BeanUtils.copyProperties(Object source, Object target)方法进行对象的拷贝, 3、代码实现: import org.springframework.beans.BeanUtils; import java.ut

    1、场景:

    现有一个ShoppingAddDto类和一个ShoppingItemProperty类,ShoppingAddDto类中包含以ShoppingItemProperty为属性的字段。现有多个ShoppingAddDto类的对象组成一个List集合名为List,实现此List集合的拷贝生成ListNew,使得拷贝后的ListNew集合修改结果不影响之前的List集合。

    == 注==:
    这里类的嵌套为引用类型,下面会分别演示引用类型的深浅拷贝(即一层和多层的拷贝),如大家有简便的方式,欢迎留言讨论。

    == 拓展:==
    对List集合进行按指定条件进行分组形成Map的形式

    2、解决方法:

    对List集合进行for循环遍历,每次循环用BeanUtils.copyProperties(Object source, Object target)方法进行对象的拷贝,

    3、代码实现:

    
    import org.springframework.beans.BeanUtils;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    public class test007 {
    
        static class ShoppingItemProperty{
            /**
             * 属性名称
             */
            private String name;
    
            /**
             * 属性值
             */
            private String value;
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public String getValue() {
                return value;
            }
    
            public void setValue(String value) {
                this.value = value;
            }
    
            @Override
            public String toString() {
                return "ShoppingItemProperty{" +
                        "name='" + name + '\'' +
                        ", value='" + value + '\'' +
                        '}';
            }
        }
    
        static class ShoppingAddDto{
            private String key;
            private List<ShoppingItemProperty> shoppingItemProperty;
    
            public String getKey() {
                return key;
            }
    
            public void setKey(String key) {
                this.key = key;
            }
    
            public List<ShoppingItemProperty> getShoppingItemProperty() {
                return shoppingItemProperty;
            }
    
            public void setShoppingItemProperty(List<ShoppingItemProperty> shoppingItemProperty) {
                this.shoppingItemProperty = shoppingItemProperty;
            }
    
            @Override
            public String toString() {
                return "ShoppingAddDto{" +
                        "key='" + key + '\'' +
                        ", shoppingItemProperty=" + shoppingItemProperty +
                        '}';
            }
    
            public String getPropertyValueByName(String name) {
                String result = null;
                if(shoppingItemProperty != null && !shoppingItemProperty.isEmpty()) {
                    for (ShoppingItemProperty property : shoppingItemProperty) {
                        if(name.equals(property.getName())) {
                            result = property.getValue();
                            break;
                        }
                    }
                }
                return result;
            }
    
        }
    
        public static void main(String[] args) {
    
            List<ShoppingAddDto> shoppingAddDtoList = new ArrayList<>();
    
            List<ShoppingItemProperty> kvs1 = new ArrayList<>();
            ShoppingItemProperty kv1 = new ShoppingItemProperty();
            kv1.setName("disksSize");
            kv1.setValue("1");
            kvs1.add(kv1);
            ShoppingItemProperty kv2 = new ShoppingItemProperty();
            kv2.setName("joker2");
            kv2.setValue("2");
            kvs1.add(kv2);
            ShoppingAddDto shoppingAddDto = new ShoppingAddDto();
            shoppingAddDto.setKey("addDto1");
            shoppingAddDto.setShoppingItemProperty(kvs1);
            shoppingAddDtoList.add(shoppingAddDto);
    
            List<ShoppingItemProperty> kvs2 = new ArrayList<>();
            ShoppingItemProperty kv3 = new ShoppingItemProperty();
            kv3.setName("disksSize");
            kv3.setValue("2");
            kvs2.add(kv3);
            ShoppingItemProperty kv4 = new ShoppingItemProperty();
            kv4.setName("joker2");
            kv4.setValue("2");
            kvs2.add(kv4);
            ShoppingAddDto shoppingAddDto2 = new ShoppingAddDto();
            shoppingAddDto2.setKey("addDto2");
            shoppingAddDto2.setShoppingItemProperty(kvs2);
            shoppingAddDtoList.add(shoppingAddDto2);
    
            List<ShoppingItemProperty> kvs3 = new ArrayList<>();
            ShoppingItemProperty kv5 = new ShoppingItemProperty();
            kv5.setName("disksSize");
            kv5.setValue("1");
            kvs3.add(kv5);
            ShoppingItemProperty kv6 = new ShoppingItemProperty();
            kv6.setName("joker2");
            kv6.setValue("2");
            kvs3.add(kv6);
            ShoppingAddDto shoppingAddDto3 = new ShoppingAddDto();
            shoppingAddDto3.setKey("addDto3");
            shoppingAddDto3.setShoppingItemProperty(kvs3);
            shoppingAddDtoList.add(shoppingAddDto3);
    
            // 浅拷贝:
            List<ShoppingAddDto> addDtosNewList = new ArrayList<>();
            for (ShoppingAddDto addDto : shoppingAddDtoList){
                ShoppingAddDto addDtoNew = new ShoppingAddDto();
                BeanUtils.copyProperties(addDto,addDtoNew);
                addDtosNewList.add(addDtoNew);
            }
            // 浅拷贝
            // 修改新list的key值,之前的list不受影响。
            // 但是修改引用属性shoppingItemProperty,会都受影响。
            System.out.println("修改addDtosNewList前的shoppingAddDtoList:" + shoppingAddDtoList);
            System.out.println("修改addDtosNewList前的addDtosNewList:    " + addDtosNewList);
            addDtosNewList.get(0).setKey("100");
            System.out.println("修改addDtosNewList后的addDtosNewList:    " + addDtosNewList);
            System.out.println("修改addDtosNewList后的shoppingAddDtoList:" + shoppingAddDtoList);
    //        addDtosNewList.get(0).getShoppingItemProperty().get(0).setValue("100");
    //        System.out.println("修改addDtosNewList后的addDtosNewList:    " + addDtosNewList);
    //        System.out.println("修改addDtosNewList后的shoppingAddDtoList:" + shoppingAddDtoList);
            System.out.println("=================================================");
            System.out.println("深拷贝:");
    
            // 深拷贝:
            List<ShoppingAddDto> addDtosDeepCopyList = new ArrayList<>();
            for (ShoppingAddDto addDto : shoppingAddDtoList){
                ShoppingAddDto addDtoNew = new ShoppingAddDto();
                List<ShoppingItemProperty> propertiesNew = new ArrayList<>();
                for (ShoppingItemProperty shoppingItemProperty : addDto.getShoppingItemProperty()){
                    ShoppingItemProperty propertyNew = new ShoppingItemProperty();
                    BeanUtils.copyProperties(shoppingItemProperty,propertyNew);
                    propertiesNew.add(propertyNew);
                }
                BeanUtils.copyProperties(addDto,addDtoNew);
                addDtoNew.setShoppingItemProperty(propertiesNew);
                addDtosDeepCopyList.add(addDtoNew);
            }
            System.out.println("修改addDtosDeepCopyList前的shoppingAddDtoList:" + shoppingAddDtoList);
            System.out.println("修改addDtosDeepCopyList前的addDtosNewList:    " + addDtosDeepCopyList);
            addDtosDeepCopyList.get(0).getShoppingItemProperty().get(0).setValue("100");
            System.out.println("修改addDtosDeepCopyList后的addDtosDeepCopyList:" + addDtosDeepCopyList);
            System.out.println("修改addDtosDeepCopyList后的shoppingAddDtoList:" + shoppingAddDtoList);
    
            // 拓展:将List集合中disksSize字段值一样的进行分组,组成Map的结构形式。
            Map<String, List<ShoppingAddDto>> listMap = shoppingAddDtoList.stream().collect(Collectors.groupingBy(t -> t.getPropertyValueByName("disksSize")));
            System.out.println(listMap);
    
    
        }
    }
    
    

    运行结果展示:
    运行结果
    具体执行结果如下:

    修改addDtosNewList前的shoppingAddDtoList:[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosNewList前的addDtosNewList:    [ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosNewList后的addDtosNewList:    [ShoppingAddDto{key='100', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosNewList后的shoppingAddDtoList:[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    =================================================
    深拷贝:
    修改addDtosDeepCopyList前的shoppingAddDtoList:[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosDeepCopyList前的addDtosNewList:    [ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosDeepCopyList后的addDtosDeepCopyList:[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='100'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    修改addDtosDeepCopyList后的shoppingAddDtoList:[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}]
    {1=[ShoppingAddDto{key='addDto1', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}, ShoppingAddDto{key='addDto3', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='1'}, ShoppingItemProperty{name='joker2', value='2'}]}], 2=[ShoppingAddDto{key='addDto2', shoppingItemProperty=[ShoppingItemProperty{name='disksSize', value='2'}, ShoppingItemProperty{name='joker2', value='2'}]}]}
    
    

    4、总结

    浅拷贝就是利用for循环 + BeanUtils的copyProperties方法实现。
    深拷贝就是再其那套一层循环,将更深层次的引用类型属性逐一通过BeanUtils的copyProperties的方法进行拷贝。

    没有for循环解决不了的问题,如果有那就两个
    这种方式确实有点low,希望大家提出更优解讨论。

    5、其余方式实现深浅拷贝

    1、转载:
    https://www.cnblogs.com/lzzRye/p/9459465.html

    展开全文
  • List<TestCopyVO3> tcv3List = new ArrayList();////TestCopyVO3比TestCopyEntity对象的字段多一个infoDir //打印赋值之前的值 System.out.println("赋值之前===========>"); tcv1List.stream().forEach...
  • 遍历List中的Map集合

    千次阅读 2017-08-17 09:31:47
    // list 是传入的表身数据 List list = new ArrayList(); for(int i=0;i TfPss tfPss= new TfPss...BeanUtils.copyProperties(mfPssWithBLOBs.getParams().get(i), tfPss); list.add(tfPss); } //listFlg 是用于前台出
  • BeanUtils.setProperty(obj, field.getName(), tempStr); } } list.add(obj); } } catch (Exception e) { e.printStackTrace(); } finally { DBCloseUtils.closeCSR(conn, pstmt, ...
  • BeanUtils.setProperty(obj, field.getName(), tempStr); } } list.add(obj); } } catch (Exception e) { e.printStackTrace(); } finally { DBCloseUtils.closeCSR(conn, ...
  • import lombok.extern.slf4j.Slf4j;...import org.springframework.beans.BeanUtils; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; /** * d...
  • BeanUtils 如何拷贝 List

    千次阅读 2020-01-15 15:40:17
    将需要拷贝的集合遍历,暴力拷贝。 测试方式 @Test public void listCopyCommon() { List<UserDO> userDOList = new ArrayList(); userDOList.add(new UserDO(1L, "Van", 18, 1)); userDOList.add(new UserDO...
  • BeanUtils.copyProperties()无法复制List集合,制作通用工具类来...查了网上资料,大多推荐使用循坏对entiy遍历进行BeanUtils.copyProperties操作。 单一对entiy的循环,降低了复用性,个人不喜欢。 想利用反射的机制
  • 需要注意的就是把List拆分,遍历add,然后把list设置到返回对象中 package test.test; import java.util.ArrayList; import java.util.List; import org.springframework.beans.BeanUtils; import ...
  • public List<DeliverAddressDTO> selectByUserId(String userId) { //根据userId查询 List<DeliverAddress> deliverAddresses = addressMapper.selectByUserId(userId); //new一...
  • public List selectWarehouseList(Pager pager) { List warehouses = warehouseMapper.selectWarehouseList(pager.getCondition()); List warehouseVOList = warehouses.stream().map(e -> { WarehouseVO ...
  • (),再进行 遍历,再单个BeanUtils.copyProperties。 共同之处太多,索性直接抽出来,使用的时候不必new。直接调用即可。 BeanConverUtil.converList(sourceList,User.class) BeanConverUtil.converList(sourceOb
  • BeanUtils

    2018-10-18 17:05:00
     BeanUtils 类的功能是把一个Map集合中的数据, 封装到一个 JavaBean 上. 使用BeanUtils工具类中的populate方法就可以把Map集合中的数据封装到指定的bean上.Map中的key名称必须和bean对象的属性名称保持一致.   ...
  • 本文源自【大学之旅_谙忆的博客】 其实不打算写的,因为和前面的是一样的,不过既然有人问起,我就写一下吧。MyBeanUtils这是核心的类:通过这个类来返回一个bean对象...package cn.hncu.beanUtils;import java.lang.r
  • 自定义BeanUtils

    2021-06-21 10:12:38
    自定义BeanUtils工具类,主要包含了3个方法 package com.chinayanghe.fico.utils; import cn.com.bizunited.cp.common.utils.FastJsonUtils; import org.apache.commons.beanutils.BeanUtils; import org.apache....
  • 所以特意写个工具类,主要利用spring提供的BeanUtils工具类,用redis翻译字典 其中功能包括: 翻译JavaBean中带有@CacheFormat的属性 /** * 翻译当前类中需要翻译的字典值 * * @param ...
  • import org.apache.commons.beanutils.BeanUtils; public static <T> List<T> statementExecuteQuery(Class<T> clazz, final String sql){ T entity = null; Statement statement = null; ResultSet resultSet =...
  • BeanUtils封装数据

    2021-03-03 20:51:55
    BeanUtils封装数据 package com.hyit.utils; import javax.servlet.http.HttpServletRequest; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org....
  • BeanUtils copyProperties to copy Arraylist

    千次阅读 热门讨论 2018-05-27 20:11:49
    起初想到的是循环遍历,将list1的每个属性一一赋值给list2的每一个属性,属性少还好,属性多的时候效率低而且还很麻烦,这时借助org.springframework.beans.BeanUtils 的copyProperties方法来实现。...
  • JAVA循环遍历

    千次阅读 2017-03-15 11:17:08
    List xq = serviceTemplate.selectList("FD_WLZX_WLSQXX","and FD_WLZX_WLSQXX_ID in ("+xqid+")"); //将查询出来的数据保存到xq这个list里面 for(DynaBean list : xq)//循环xq这个list { DynaBean zxdxq = new ...
  • DBUtils和BeanUtils

    2018-06-14 19:03:41
    DBUtils和BeanUtils的用法和区别
  • // 遍历域 for (Field field : fields) { try { // 反射获取对象成员的字段值 tempStr = rs.getObject(field.getName()); } catch (SQLException e) { tempStr = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,960
精华内容 2,384
关键字:

beanutilslist遍历