List集合中根据相同属性的对象合并计算
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集合中根据相同属性的对象合并计算相关推荐
- 在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加。 提示:Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Pe
题目: 在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加. 提示:Person类中定义name和age属性,重写hashCode()方法和equals()方法, ...
- 集合经典一练—— 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。
在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加.要求如下: Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对 ...
- 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加
16.在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加. 提示: 1)Person类中定义name和age属性,重写hashCode()方法和equals()方 ...
- 获取两个List集合中的不相同的对象
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/* ...
- List<String,Object>针对于集合中Map某个属性值求和
假如你需要List<Map<String,Object>> 中Map中的每个属性值进行累加求和 代码如下: List<Map<String, Object>& ...
- Java 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。Person类中定义name和age属性。
import java.util.HashSet;public class Person {private String name;private int age;public Person(Stri ...
- 使用stream流进行集合排序取最大值,根据集合中的bigdemal属性排序(正序反序)并取最大值
业务: 求折线图的UPH图相关数据,前端动态修改纵轴的峰值,需要后端获取最大值 1)根据集合某个属性(业务以bigdecimal数据为例)进行集合排序,包括升序反序 2)根据集合的某个number数值 ...
- 利用Java8新特性stream流给集合中的某个属性赋值
今天在编写一个返回对象VO时,需要做一些处理,返回对象VO如下: CollectListVO @Data @JsonIgnoreProperties(ignoreUnknown = true) @Ap ...
- Spring框架中集合属性为对象的注入方法
Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...
- 实体对象集合中根据实体对象的某一属性进行大小排序
背景 代码实现 思路简述 效果图示 背景 今天我的领导跟我提了一个小小的建议,我觉得很不错.我有这么一个界面,显示的是小车的电量信息,界面很简单,简单的由listView控件展示数据.界面的小车电量信 ...
最新文章
- Unity3D:中小型团队游戏研发的突围之道
- Build RESTful client
- Redis概述与Redis集群(一)
- SecureCRT连接Linux终端中文乱码解决方法
- ES5、ES6、ES7、ES8
- Ajax 模糊查询的简单实现
- AT2368-[AGC013B]Hamiltonish Path【构造】
- 单例设计模式之安全的懒汉式
- 格兰杰因果关系检验_混频(mixed frequency)数据的格兰杰因果(Grange causality)检验及其Matlab实现...
- java jtextarea滚动条下滑,关于JTextArea的滚动条问题
- (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
- 7.QT-Qt对象间的父子关系
- linux gcc编译模式,在Linux中GCC详细模式输出说明
- 在线HTTP POST/GET接口测试 地址
- 【爬虫学习笔记day51】6.1. scrapy-redis的官方文档源码分析参考:Connection
- avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
- mysql中+desc用法_mysql desc(DESCRIBE)命令实例讲解
- 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】
- 帆软FineBI随时记
- @ERROR: auth failed on module wwwroot rsync error: error starting client-server protocol (code 5) at
热门文章
- Codeforces 950C Zebras ( 贪心 模拟 )
- Frequent values RMQ
- Frequent values POJ - 3368(线段树)
- 从蚂蚁金服的BI和大数据团队建设,看透BI发展,再不懂就落伍了
- 【JVM技术专题】 深入学习Parallel Scavenge回收器「 原理篇」
- 5.2.1_3 普通心理学(彭冉玲第四版) - 第2章 心理的神经生理机制
- java 组件是什么意思_java中组件是什么意思?
- 40 篇原创干货,带你进入 Spring Boot 殿堂!
- 网页百度网盘上传显示服务器错误,win7系统下登陆百度浏览器提示连接服务器错误的方案?...
- Lodash源码解析-------chunk函数