List集合中根据相同属性的对象合并计算

package com.thinkgem.jeesite.modules.test.web;public class S {private String name;private String date;private int value;@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((date == null) ? 0 : date.hashCode ());result = prime * result + ((name == null) ? 0 : name.hashCode ());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass () != obj.getClass ())return false;S other = (S) obj;if (date == null) {if (other.date != null)return false;} else if (!date.equals ( other.date ))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals ( other.name ))return false;return true;}static S merge(S s1, S s2) {if (!s1.equals ( s2 )) {throw new IllegalArgumentException ();}return new S ( s1.name, s1.date, s1.value + s2.value );}@Overridepublic String toString() {return "S{" +"name='" + name + '\'' +", date='" + date + '\'' +", value=" + value +'}';}public S(String name) {this.name = name;}public S(String name, String date, int value) {this.name = name;this.date = date;this.value = value;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}
}

上面是实体,需要重写equals入hashcode方法,定义merge方法

下面是测试类

package com.thinkgem.jeesite.modules.test.web;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test {public static void main(String[] args) {List<S> list = new ArrayList<S> ();list.add(new S("小刘" ,   "2015/9/1",   2));list.add(new S("小刘" ,   "2015/9/2",   3));list.add(new S("小强" ,   "2015/9/1",   4));list.add(new S("小强" ,   "2015/9/1",   5));list.add(new S("小刘" ,   "2015/9/1",   6));list.add(new S("小图" ,   "2015/9/1",   7));list.add(new S("小刘" ,   "2015/9/1",   8));list.add(new S("小图" ,   "2015/9/1",   9));list.add(new S("小刘" ,   "2015/9/2",   99));Map<S, S> map = new HashMap<S, S> ();for (S s : list) {if (map.containsKey(s)) {map.put(s, S.merge(s, map.get(s)));} else {map.put(s, s);}}System.out.println(map.values());}}

打印结果如下

[S{name='小图', date='2015/9/1', value=16},

S{name='小刘', date='2015/9/1', value=16},

S{name='小强', date='2015/9/1', value=9},

S{name='小刘', date='2015/9/2', value=102}]

然后就可以 了

List集合中根据相同属性的对象合并计算相关推荐

  1. 在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加。 提示:Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Pe

    题目: 在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加. 提示:Person类中定义name和age属性,重写hashCode()方法和equals()方法, ...

  2. 集合经典一练—— 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。

    在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加.要求如下: Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对 ...

  3. 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加

    16.在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加. 提示: 1)Person类中定义name和age属性,重写hashCode()方法和equals()方 ...

  4. 获取两个List集合中的不相同的对象

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/* ...

  5. List<String,Object>针对于集合中Map某个属性值求和

    假如你需要List<Map<String,Object>> 中Map中的每个属性值进行累加求和 代码如下: List<Map<String, Object>& ...

  6. Java 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。Person类中定义name和age属性。

    import java.util.HashSet;public class Person {private String name;private int age;public Person(Stri ...

  7. 使用stream流进行集合排序取最大值,根据集合中的bigdemal属性排序(正序反序)并取最大值

    业务: 求折线图的UPH图相关数据,前端动态修改纵轴的峰值,需要后端获取最大值 1)根据集合某个属性(业务以bigdecimal数据为例)进行集合排序,包括升序反序 2)根据集合的某个number数值 ...

  8. 利用Java8新特性stream流给集合中的某个属性赋值

    今天在编写一个返回对象VO时,需要做一些处理,返回对象VO如下: CollectListVO @Data @JsonIgnoreProperties(ignoreUnknown = true) @Ap ...

  9. Spring框架中集合属性为对象的注入方法

    Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...

  10. 实体对象集合中根据实体对象的某一属性进行大小排序

    背景 代码实现 思路简述 效果图示 背景 今天我的领导跟我提了一个小小的建议,我觉得很不错.我有这么一个界面,显示的是小车的电量信息,界面很简单,简单的由listView控件展示数据.界面的小车电量信 ...

最新文章

  1. Unity3D:中小型团队游戏研发的突围之道
  2. Build RESTful client
  3. Redis概述与Redis集群(一)
  4. SecureCRT连接Linux终端中文乱码解决方法
  5. ES5、ES6、ES7、ES8
  6. Ajax 模糊查询的简单实现
  7. AT2368-[AGC013B]Hamiltonish Path【构造】
  8. 单例设计模式之安全的懒汉式
  9. 格兰杰因果关系检验_混频(mixed frequency)数据的格兰杰因果(Grange causality)检验及其Matlab实现...
  10. java jtextarea滚动条下滑,关于JTextArea的滚动条问题
  11. (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
  12. 7.QT-Qt对象间的父子关系
  13. linux gcc编译模式,在Linux中GCC详细模式输出说明
  14. 在线HTTP POST/GET接口测试 地址
  15. 【爬虫学习笔记day51】6.1. scrapy-redis的官方文档源码分析参考:Connection
  16. avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
  17. mysql中+desc用法_mysql desc(DESCRIBE)命令实例讲解
  18. 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】
  19. 帆软FineBI随时记
  20. @ERROR: auth failed on module wwwroot rsync error: error starting client-server protocol (code 5) at

热门文章

  1. Codeforces 950C Zebras ( 贪心 模拟 )
  2. Frequent values RMQ
  3. Frequent values POJ - 3368(线段树)
  4. 从蚂蚁金服的BI和大数据团队建设,看透BI发展,再不懂就落伍了
  5. 【JVM技术专题】 深入学习Parallel Scavenge回收器「 原理篇」
  6. 5.2.1_3 普通心理学(彭冉玲第四版) - 第2章 心理的神经生理机制
  7. java 组件是什么意思_java中组件是什么意思?
  8. 40 篇原创干货,带你进入 Spring Boot 殿堂!
  9. 网页百度网盘上传显示服务器错误,win7系统下登陆百度浏览器提示连接服务器错误的方案?...
  10. Lodash源码解析-------chunk函数