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;
}

  

list去除并且把值相加的更多相关文章

  1. (转载)php 合并数组中的数据,如果键值相等其值相加

    (转载)http://hi.baidu.com/syxrrrr/item/7dfb2387343ce0874414cfdd /* * 合并数据,如果键值相等其值相加 * @param array $d ...

  2. js篇-数组合并其中属性值相同的项目且属性值相加

    项目背景是:var a = [{id:1,num:"12"},{id:2,num:"13"},{id:3,num:"3"},{id:2,nu ...

  3. 【Excel】SUMIF 或用 筛选器 实现挑选含有某些字段的值,然后把这些值所对应的后面某列上的值相加

    Background: 挑选含有某些字段的值,然后把这些值所对应的后面某列上的值相加.比如挑选下表中,所有带有“MX104”这个字段的值,然后把它的后面total那一列的值相加. Solution: ...

  4. 用C#写一个函数,在一个数组中找出随意几个值相加等于一个值 与迭代器对比

    算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}  要找出那些数相加等 ...

  5. Python 字典值相加

    #字典值相加 def union_dic(*objs): _keys = set(sum([obj.keys() for obj in objs],[])) _total = {} for _key ...

  6. Python两个字典键同值相加的几种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Jerry_1126/article/de ...

  7. js数组去重,id相同对某值相加合并

    js数组去重,id相同对某值相加合并 案例1: 假设需要处理的数组结构. let arr =[ {id:'1', value:10}, {id:'1', value:20}, {id:'2', val ...

  8. PHP二维数组去除重复,重复值相加

    $arr = array( array('id' => 122, 'name' => '张三', 'amount' => '1'), array('id' => 123, 'n ...

  9. c#linq去除重复项并将相同数据的数量字段值相加

    这是执行前和执行后想要的效果 以下是用Sql语句实现的代码: select goodsno, goodsspec,SUM([count]) as count from goods group by g ...

随机推荐

  1. EF 相见恨晚的Attach方法

    一个偶然的机会,让我注意了EF 的Attach方法,于是深入了解让我大吃一惊 在我所参与的项目中所有的更新操作与删除操作都是把原对象加载出来后,再做处理,然后再保存到数据库,这样的操作不缺点在于每一次 ...

  2. [MCSM]伪随机数和伪随机数生成器

    1. 几个问题 为什么需要随机数? 伪随机数伪在哪里? 为何要采用伪随机数代替随机数?这种代替是否有不利影响? 如何产生(伪)随机数? 以下内容将围绕这几个问题依次说明. 2. 参考 http://e ...

  3. ASP.NET MVC3入门教程之第一个WEB应用程序

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=91&extra=page%3D1 上一节,我们已经搭建好了AS ...

  4. 项目分布式部署那些事(2):基于OCS(Memcached)的Session共享方案

    在不久之前发布了一篇"项目分布式部署那些事(1):ONS消息队列.基于Redis的Session共享,开源共享",因为一些问题我们使用了阿里云的OCS,下面就来简单的介绍和分享下相 ...

  5. js下拉框

    Js下拉框   http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html

  6. [BZOJ3714][PA2014]Kuglarz(MST)

    题目: Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子 ...

  7. json数据转换失败json_last_error int(4)

    最近在程序中使用json_decode($data,true);转换失败, 并且使用 json_last_error();方法返回最后一次转换的错误,json_last_error();返回int(4 ...

  8. 东大oj-1511: Caoshen like math

    Worfzyq likes Permutation problems.Caoshen and Mengjuju are expert at these problems . They have n c ...

  9. iOS开发小技巧--自定义带有占位文字的TextView(两种方式)

    自定义控件注意或框架注意:自己暴露在外面的属性,一定要重写setter,保证外界与内部的交互性 一.方案一:通过drawRect:方法将文字画到textView中,监听文字改变用的是通知中心(代理也可 ...

  10. Spring中配置和读取多个Properties文件

    一个系统中通常会存在如下一些以Properties形式存在的配置文件 1.数据库配置文件demo-db.properties: database.url=jdbc:mysql://localhost/ ...