• list去除并且把值相加


    package list;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class List2 {
    	public static void main(String[] args) {
    		List<User> us=new ArrayList<User>();
    		User u=new User("A",1);
    		us.add(u);
    		u=new User("C",2);
    		us.add(u);
    		u=new User("D",5);
    		us.add(u);
    		u=new User("A",4);
    		us.add(u);
    		u=new User("D",6);
    		us.add(u);
    		Map<String,Integer> map1=new HashMap<String,Integer>();
    		for(int i=0;i<us.size();i++){
    			map1.put(us.get(i).getName(),0);
    			
    		}
    		for(int i=0;i<us.size();i++){
    			if(map1.containsKey(us.get(i).getName())){
    				map1.put(us.get(i).getName(),us.get(i).getId()+map1.get(us.get(i).getName()));
    			}
    			
    		}
    		
    		for(Map.Entry<String, Integer> entry : map1.entrySet())    
    		{    
    		    System.out.println(entry.getKey()+": "+entry.getValue());    
    		} 
    	}
    
    }
    

    输出结果:

    D: 11
    A: 5
    C: 2
    

    另一种情况:

    要判断两个都不同的时候第才新增不能用map这种方法,只能第一次取第一个值,后面的去循环判断是否与第一个相同,不同则新增,只有两个值都相同的时候才加数字

    下面这种是根据serviceType去加数字

    public List<EcrmOrderStatistics> loadStatistics(List<EOrderStat> statlist){
    		String prevAreaCode ="";   //上一个地市
    		String prevProType ="" ;   //上一个产品id	
    		List<EcrmOrderStatistics> result =null;  
    		int i=0;
    		if (null != statlist && statlist.size()>0) {	
    			EcrmOrderStatistics stat=null;
    			if(statlist!=null&& statlist.size()>0){
    				prevProType = statlist.get(0).getProductName();
    				prevAreaCode =statlist.get(0).getAreaCode();					
    			}		
    			int add = 0;
    			int stop = 0;
    			int override = 0;
    			int changezl = 0;
    			int chaiji = 0;	
    			int total=0;
    			for (EOrderStat row : statlist) {	
    				if(null==stat){
    					stat =new EcrmOrderStatistics();
    					//stat.setProductId(prevProType);
    					stat.setAreaCode(prevAreaCode);
    					stat.setProductName(prevProType);
    				}
    				//当产品类型轮转
    				if (!prevProType.equals(row.getProductName())||!prevAreaCode.equalsIgnoreCase(row.getAreaCode())){
    					if(result==null){
    						result =new ArrayList<EcrmOrderStatistics>();
    					}
    					stat.setAddNum(add);
    					stat.setStopNum(stop);
    					stat.setOverrideNum(override);
    					stat.setChangezlNum(changezl);
    					stat.setChaijiNum(chaiji);
    					stat.setPerAddNum(add - chaiji);
    					stat.setArriveNum(total);
    					result.add(stat);
    					
    					stat =new EcrmOrderStatistics();
    					prevProType =row.getProductName();
    					prevAreaCode =row.getAreaCode();
    					//stat.setProductId(prevProType);
    					stat.setAreaCode(prevAreaCode);	
    					stat.setProductName(prevProType);
    					add = 0 ;
    					stop = 0;
    					override = 0;
    					changezl = 0;
    					chaiji = 0;	
    					total=0;
    				}
    							
    				if ("001".equals(row.getServiceType())|| "020".equals(row.getServiceType())||"007".equals(row.getServiceType()) ) {					
    					add = add + row.getOrderNum();
    				} else if ("002".equals(row.getServiceType())) {
    					stop = stop + row.getOrderNum();
    				} else if ("003".equals(row.getServiceType())) {
    					override = override + row.getOrderNum();
    				} else if ("004".equals(row.getServiceType())||"022".equals(row.getServiceType())||"009".equals(row.getServiceType())) {
    					changezl = changezl + row.getOrderNum();
    				} else if ("005".equals(row.getServiceType())||"021".equals(row.getServiceType())||"008".equals(row.getServiceType())) {
    					chaiji = chaiji + row.getOrderNum();
    				}
    				total+=row.getOrderNum();			
    				if((i++)==(statlist.size()-1) ){
    					if(result==null){
    						result =new ArrayList<EcrmOrderStatistics>();
    					}					
    					stat.setAddNum(add);
    					stat.setStopNum(stop);
    					stat.setOverrideNum(override);
    					stat.setChangezlNum(changezl);
    					stat.setChaijiNum(chaiji);
    					stat.setPerAddNum(add - chaiji);
    					stat.setArriveNum(total);
    					result.add(stat);			
    				}
    			}
    			
    		}
    		return result;
    	}
    

      

  • 相关阅读:
    Activity生命周期 onCreate onResume onStop onPause (转)
    职场链接
    memset中的sizeof
    c文件操作 (转)
    串口编程 tcflush()函数 (转)
    tcflush 功能(转)
    串口开发(转)
    ios github网址
    做移动端视频通话软件,大致看了下现有的开源软件(转)
    PJSIP框架
  • 原文地址:https://www.cnblogs.com/JAYIT/p/6183127.html
Copyright © 2020-2023  润新知