精华内容
下载资源
问答
  •  在实际开发中可能存在将两个对象合并为一个对象的需求,传统的方法当然是一个个get和set但是这样的代码很不整洁,我们可以基于反射去实现这一需求。所幸apache和spring都提供的有该方法。 Spring: public ...

    问题场景:

      在实际开发中可能存在将两个对象合并为一个对象的需求,传统的方法当然是一个个get和set但是这样的代码很不整洁,我们可以基于反射去实现这一需求。所幸apache和spring都提供的有该方法。

    Spring:

    public static void copyProperties(Object source, Object target) throws BeansException {
    		copyProperties(source, target, null, (String[]) null);
    }

    该方法以target对象为主体,将source对象的值赋给target。默认是直接覆盖相同字段的全部值。

    实际需求中只需要复制部分属性,我们可以使用该方法,忽略部分字段

    public static void copyProperties(Object source, Object target, String... ignoreProperties) throws BeansException {
    		copyProperties(source, target, null, ignoreProperties);
    	}

    如:忽略已经有值的字段,

    public static String[] getValuePropertyNames (Object source) {
            final BeanWrapper src = new BeanWrapperImpl(source);
            java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
            Set<String> emptyNames = new HashSet<>();
            for(java.beans.PropertyDescriptor pd : pds) {
                Object srcValue = src.getPropertyValue(pd.getName());
                if (null != srcValue) emptyNames.add(pd.getName());
            }
            String[] result = new String[emptyNames.size()];
            return emptyNames.toArray(result);
        }

    该方法为获取所有有值的方法。当然也可以直接指定具体字段。

     

     

    apache:

    该方法为将orig方法的值赋给dest,但是不提供忽略覆盖的方法

    public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
            BeanUtilsBean.getInstance().copyProperties(dest, orig);
        }

     

    展开全文
  • java合并json对象,对象是ECharts里的Option 如 json1 {"title": {"textStyle": {"color": "1111","decoration": "2222"}}} json2 {"title": {"textStyle": {"color": "aaaa","color2": "bbbb"}}} 想得到的结果 {...
  • JAVA两个对象属性合并

    万次阅读 2017-12-26 14:06:58
    import java.lang.reflect.Field; public class CombineBeans ... * @Description: 该方法是用于相同对象不同属性值的合并,如果两个相同对象中同一属性都有值, * 那么sourceBean中的值会覆盖tagetBean重点的值...
    import java.lang.reflect.Field;
    
    public class CombineBeans {
    
    	/**
    	 * @Title: combineSydwCore
    	 * @Description: 该方法是用于相同对象不同属性值的合并,如果两个相同对象中同一属性都有值,
    	 *               那么sourceBean中的值会覆盖tagetBean重点的值
    	 * @author: WangLongFei
    	 * @date: 2017年12月26日 下午1:53:19
    	 * @param sourceBean
    	 *            被提取的对象bean
    	 * @param targetBean
    	 *            用于合并的对象bean
    	 * @return targetBean 合并后的对象
    	 * @return: Object
    	 */
    	@SuppressWarnings("unused")
    	private Object combineSydwCore(Object sourceBean, Object targetBean) {
    		Class sourceBeanClass = sourceBean.getClass();
    		Class targetBeanClass = targetBean.getClass();
    
    		Field[] sourceFields = sourceBeanClass.getDeclaredFields();
    		Field[] targetFields = sourceBeanClass.getDeclaredFields();
    		for (int i = 0; i < sourceFields.length; i++) {
    			Field sourceField = sourceFields[i];
    			Field targetField = targetFields[i];
    			sourceField.setAccessible(true);
    			targetField.setAccessible(true);
    			try {
    				if (!(sourceField.get(sourceBean) == null)) {
    					targetField.set(targetBean, sourceField.get(sourceBean));
    				}
    			} catch (IllegalArgumentException | IllegalAccessException e) {
    				e.printStackTrace();
    			}
    		}
    		return targetBean;
    	}
    
    	// 测试 combineBeans方法
    	public static void main(String[] args) {
    		Student sourceModel = new Student(); // 第一个对象
    		Student targetModel = new Student(); // 第二个model对象
    
    		sourceModel.setSex("1");
    		sourceModel.setcName("张三");
    
    		targetModel.setSex("2");
    		targetModel.setcName("李四");
    		targetModel.setCardName("身份证");
    		targetModel.setCardNumber("222222222222222222222");
    
    		CombineBeans test = new CombineBeans();
    		test.combineSydwCore(sourceModel, targetModel);
    	}
    }
    
    
    public class Student {
    	private String sex;
    	private String cName;
    	private String cardName;
    	private String cardNumber;
    
    	public String getSex() {
    		return sex;
    	}
    
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    
    	public String getcName() {
    		return cName;
    	}
    
    	public void setcName(String cName) {
    		this.cName = cName;
    	}
    
    	public String getCardName() {
    		return cardName;
    	}
    
    	public void setCardName(String cardName) {
    		this.cardName = cardName;
    	}
    
    	public String getCardNumber() {
    		return cardNumber;
    	}
    
    	public void setCardNumber(String cardNumber) {
    		this.cardNumber = cardNumber;
    	}
    
    }

     

    展开全文
  • Java List对象合并去重数据

    千次阅读 2018-04-13 08:59:45
    最近有批数据需要处理 数据格式为List&lt;bean&gt; list=new ArrayList&lt;bean&gt;();里面存在大批相同的数据,现在需要去除相同的数据即相同数据只留下来一条,并且需要将相同数据中一个数值叠加...

    最近有批数据需要处理 数据格式为List<bean> list=new ArrayList<bean>();里面存在大批相同的数据,现在需要去除相同的数据即相同数据只留下来一条,并且需要将相同数据中一个数值叠加。本来以为处理挺简单的,后来硬生生搞了好几个小时,先将实现过程放在下面。

    1:private int id;

         private int age;

         ...省略get,set

    2:


    List<ImportExcelTest> list=new ArrayList<ImportExcelTest>();
    		ImportExcelTest z = new ImportExcelTest();
    		  z.setId(1);
    		  z.setAge(1);
    		  ImportExcelTest zzzz = new ImportExcelTest();
    		  zzzz.setId(1);
    		  zzzz.setAge(2);
    		  
    		  ImportExcelTest zz = new ImportExcelTest();
    		  zz.setId(2);
    		  zz.setAge(3);
    		  ImportExcelTest zzz = new ImportExcelTest();
    		  zzz.setId(2);
    		  zzz.setAge(4);
    		  
    		  list.add(zzz);list.add(zz);list.add(zzzz);list.add(z);
    		  
    		  List<ImportExcelTest> list1=new ArrayList<ImportExcelTest>();
    		 
    	        for (int i = 0; i < list.size(); i++) {
    	        	if(i==0){
    	        		 ImportExcelTest z1 = new ImportExcelTest();
    	        		z1.setId(list.get(i).getId());
    	        		z1.setAge(list.get(i).getAge());
    	        		list1.add(z1);
    	        		i++;
    	        	}
    	        	for (int j = 0; j < list1.size(); j++) {
    					if(list.get(i).getId()==list1.get(j).getId()){
    						int a=list.get(i).getAge()+list1.get(j).getAge();
    						list1.get(j).setAge(a);
    						
    					}else{
    						Boolean b=false;
    						for (int j1 = 0; j1 < list1.size(); j1++) {
    							if(list1.get(j1).getId()==list.get(i).getId()){
    								b=true;
    							}
    						}
    						if(b==false){
    							ImportExcelTest z1 = new ImportExcelTest();
    							System.out.println("aaa");
    							z1.setId(list.get(i).getId());
    							z1.setAge(list.get(i).getAge());
    							list.remove(i);
    			        		list1.add(z1);
    						}
    						 
    					}
    				}
    	        	
    			}
    	        System.out.println("list1:"+list1.toString());
    
    

    控制台输出结果为:list1:[ImportExcelTest [id=2, age=7], ImportExcelTest [id=1, age=3]]

    展开全文
  • 传进来的list对象中有相同的wareInfoId和tagId,但是它们的number不同,需要把它们合并为一个对象,并把number相加,如下代码 //去重并合并数量 private List&lt;WareCommentTag&gt; distinctList(List&lt;...
    传进来的list对象中有相同的wareInfoId和tagId,但是它们的number不同,需要把它们合并为一个对象,并把number相加,如下代码
    
    //去重并合并数量
    private List<WareCommentTag> distinctList(List<WareCommentTag> list)  {
           Map<String,WareCommentTag> tempMap = new HashMap<String,WareCommentTag>();
           int wareInfoId=0;
           int tagId=0;
           int id=0;
           String wareTagId=null;
           for (int i = 0; i <list.size() ; i++) {
               wareInfoId=list.get(i).getWareInfoId();
               tagId=list.get(i).getTagId();
               id=list.get(i).getId()==null?0:list.get(i).getId();
               //把wareInfoId和tagId作为key,对象作为value
               wareTagId=String.valueOf(wareInfoId)+"-"+String.valueOf(tagId);
               if(tempMap.containsKey(wareTagId)){
                   WareCommentTag tag=new WareCommentTag();
                   if(id>0){
                       tag.setId(id);
                   }
                   tag.setTagId(tagId);
                   tag.setWareInfoId(wareInfoId);
                   tag.setNumber(tempMap.get(wareTagId).getNumber()+1);
                   tempMap.put(wareTagId,tag);
               }else {
                   tempMap.put(wareTagId,list.get(i));
               }
           }
           List<WareCommentTag> newList=new ArrayList<WareCommentTag>();
           for( Map.Entry<String,WareCommentTag> entry:  tempMap.entrySet()){
               newList.add(entry.getValue());
           }
           return newList;
       }
    展开全文
  • java合并两个对象

    千次阅读 2016-04-28 14:20:21
    merge两个对象,互补null,以新对象为主,代码如下 public static Object merge(Object master, Object follow){ if(master == null && follow == null) return null; else if(master == null && null != ...
  • Java 将两个Map对象合并为一个Map对象

    千次阅读 2018-12-25 17:49:42
    实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象合并,如果是多个 map 合并也是用这种方式。 public static void main(String[] args) {...
  • 之前有个解决方案是关于beanUtil.Copy之后,还需要处理才能使两个对象合并,今天偶尔发现还有更好用的分发,所以特此share一下。这是一个BeanUtil.Merge方法,JAVA合并对象属性,把对象的非空属性合成到目标对象上。...
  • java 多个map对象合并

    千次阅读 2018-07-31 16:19:04
    import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class MultiMapCombin {  /**  * @param args  */  public static void main(String[] args) {  Map&lt...
  • 最近工作上遇到一个要求两个不同list对象合并后并排序,网上有很多相关文章,但都是相同的list对象合并在排序,可是我遇到不同的list对象合并后并排序。于是自己动手写了一个。大家可以参考。 问题描述从数据库中...
  • Java 对象按照多个属性来合并

    千次阅读 2018-10-07 15:27:21
    private static final String detailId="detailId"; private static final String ... * 相同商品+相同货架相同货位合并 * @param * @return */ public List&lt;ReceiptBackDetailSub&gt; me...
  • java poi 合并单元格

    千次阅读 2017-06-02 16:23:55
    poi导出excel的,动态合并单元格
  • java集合合并相同元素

    2017-08-20 00:26:01
    现在需要把集合中id属性相同的元素合并成一个元素,就是像写sql一样,按id把数据分组,把orderCount和profit相加,orderCount和profit属性是int类型的,name属性不用管,因为每个id对应的name属性都不一样。...
  • java 两个map对象合并成一个map对象

    万次阅读 2013-04-10 20:58:05
    import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class MultiMapCombin {  /**  * @param args  */  public static void main(String[] args) {
  • 两个Map对象合并成一个Map对象

    千次阅读 2019-04-17 16:20:46
    两个Map对象合并成一个Map对象 两个map合并所用函数为:putAll() 代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式。 import java.util.HashMap; import java.util.Map; public ...
  • } 根据List对象的实体对象中的某个字段生成新的list public static Set ListObjectToString(List<Users> users){ List<String> stringList = users.stream().map(o->o.getUserId()).collect(Collectors.toList());...
  • java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来
  • Java 学习笔记---Java List合并重复类型

    千次阅读 2017-08-02 20:52:16
    合并A B 两个集合(A B 内部不重复),等到C 要求C没有重复的类型 ; A.removeAll(B); A.addAll(B); 2、问题描述: 要合并A B 两个集合,等到C 要求C没有重复的类型,重复类型中的权重相加; 想到的方法: ...
  • ![能编译通过,能确定流对象都存到Vector集合中了,但是写到4.txt文本中的只有1.txt中的内容](https://img-ask.csdn.net/upload/201604/08/1460124247_10301.png)
  • Java合并两个JSONArray

    万次阅读 2017-06-01 13:00:48
    //合并两个JSONArray public static JSONArray joinJSONArray(JSONArray mData, JSONArray array) { StringBuffer buffer = new StringBuffer(); try { int len = mData.length();
  • Java实现JSONObject合并

    万次阅读 2018-12-25 10:30:00
    由于算法修改,java这边结果处理有个简单的变更,需要对新旧算法输出的结果进行合并,存在相同指标时,以新算法导出的为准... 因为c++库返回的结果是json字符串,于是就写了个简单的合并方法,以便以后有类似需求...
  • Java 对象集合

    千次阅读 2018-08-13 19:56:34
    java 对象集合 1.JDK中对象集合和相关接口 JDk中主要集合类型主要分为以下四种; set:无序不可重复集合 list:有序可重复集合 map:具有映射关系集合 queue:具有队列性质集合 集合相关接口和类: ...
  • Java POI合并多个word文件

    万次阅读 热门讨论 2018-09-17 14:29:04
    对于多个docx文件,可以使用POI合并生成一个组合的docx文件,这个方法分享给大家。不过对于docx文件中存在有图片的文档,此种方法没有做处理,需要的朋友可以自己扩展一下。 import java.io.FileNotFoundException...
  • java 两个对象之间进行数据合并

    千次阅读 2020-05-31 23:01:00
    合并方法 /* 以第一个实体类为主,如果第一个的实体类某个字段为空,则会吧第二个实体类的值取过来进行赋值, 如果不为空的则不作改变 */ //针对所用对象 private static Object combineSydwCore(Object sourceBean,...
  • public static void main(String[] args) { List<ScanHistoryHeatMapDto> alist = new ArrayList<>(); ScanHistoryHeatMapDto dto = new ScanHistoryHeatMapDto(); dto.setLng("123");...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,841
精华内容 71,936
关键字:

java对象合并

java 订阅