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. ubuntu-12.10-server中打开终端的方式

    ubuntu-12.10-server系统在图形界面的任务栏上找不到终端的踪影,可以使用以下两种方式调出 1.在图形界面中点击Dash Home 点击后搜索terminal即可 2.可以通过快捷键CT ...

  2. 排序图解:js排序算法实现

    之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...

  3. 基于canvas实现物理运动效果与动画效果(一)

    一.为什么要写这篇文章 某年某月某时某种原因,我在慕课网上看到了一个大神实现了关于小球的抛物线运动的代码,心中很是欣喜,故而写这篇文章来向这位大神致敬,同时也为了弥补自己在运动效果和动画效果制作方面的 ...

  4. RabbitHub开源情况及计划

    之前写过一篇".NET 平台下的插件化开发内核(Rabbit Kernel)",已经过去三个月了,期间RabbitHub并不是没有了发展更不是放弃了发展,在RabbitHub中的群 ...

  5. BI的相关问题[转]

    什么是BI? Business Intelligence(BI) = Data Warehouse(DW) + OLAP + Data Mining(DM) 商业智能=数据仓库+联机分析+数据挖掘 做 ...

  6. 单元测试中Assert类的用法

    Assert类所在的命名空间为Microsoft.VisualStudio.TestTools.UnitTesting 在工程文件中只要引用Microsoft.VisualStudio.Quality ...

  7. Beyond Compare 3 设置自动换行

    设置自动换行方法: 在菜单栏里点击“工具”,然后在弹出列表里选择“文件格式”,在弹出框的左下角编辑文件格式默认值中,选择“文本格式”,对右侧的 ‘每行字符限制’进行修改保存即可,一般可设置80或90. ...

  8. social emotion computing-感情的分类

    第八节  情感的分类 人的情感复杂多样,可以从不同的观察角度进行分类.由于情感的核心内容是价值,因此人的情感主要必须根据它所反映的价值关系的运动与变化的不同特点来进行分类. 1.根据价值的正负变化方向 ...

  9. DeviceFamily XAML Views(一)

    DeviceFamily Veiws 可以为特定的设备(Mobile.Desktop等)制作特定的XAML视图,这种方式可以完全定制XMAL和共享后台代码. 以 Mobile 和 Desktop 为例 ...

  10. SSH框架 sequence diagram