Java中List根据对象的属性值进行数据库group by功能的操作
public class test {
public static void main(String[] args) { List<Bill> list = new test().setObject(); Set<String> set = new HashSet(); for (Bill bills : list) {
set.add(bills.getTradeTime().substring(0, 8));
} List list1 = new ArrayList();
int paySuccess = 0;
int dfSuccess = 0;
int fee = 0;
int count = 0;
//遍历set集合中的日期
for (String a : set) {
for (Bill bill : list) {
if (a.equals(bill.getTradeTime().substring(0, 8))) {
paySuccess += bill.getMoney();
fee += bill.getFee();
count++;
if ("承兑或交易成功".equals(bill.getType()))
dfSuccess += bill.getMoney();
}
}
Object[] objects = new Object[10];
objects[0] = new BigDecimal(paySuccess);
objects[1] = new BigDecimal(dfSuccess);
objects[2] = new BigDecimal(fee);
objects[3] = new BigDecimal(paySuccess-fee);
objects[4] = a;
list1.add(objects);
System.out.println("支付成功金额:" + objects[0] + "\t" + "承兑或交易成功: " + objects[1] + "\t" + objects[4] + "\t" + "手续费:" + objects[2] + "\t" + "商户结算" +
"金额:" + objects[3] + "\t" + "交易笔数:" + count + "\t日期:" + a);
paySuccess = 0;
dfSuccess = 0;
fee = 0;
count = 0;
}
String date = null;
System.out.println(date == null || date.isEmpty());
} public List<Bill> setObject() {
List<Bill> list = new ArrayList<Bill>();
Bill bill = new Bill();
bill.setTradeTime("201605050203");
bill.setMoney(2);
bill.setPayType("支付成功");
bill.setType("承兑或交易成功");
bill.setFee(1);
list.add(bill); bill = new Bill();
bill.setTradeTime("201605060203");
bill.setMoney(3);
bill.setType("");
bill.setPayType("支付成功");
bill.setFee(1);
list.add(bill); bill = new Bill();
bill.setMoney(4);
bill.setTradeTime("201605050203");
bill.setPayType("支付成功");
bill.setType("承兑或交易成功");
bill.setFee(1);
list.add(bill); bill = new Bill();
bill.setType("");
bill.setPayType("支付成功");
bill.setTradeTime("201605060203");
bill.setMoney(4);
bill.setFee(1);
list.add(bill);
return list;
}
} class Bill {
int money;
String type;
String tradeTime;
String payType;
int fee; public String getPayType() {
return payType;
} public void setPayType(String payType) {
this.payType = payType;
} public int getMoney() {
return money;
} public void setMoney(int money) {
this.money = money;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getTradeTime() {
return tradeTime;
} public void setTradeTime(String tradeTime) {
this.tradeTime = tradeTime;
} public int getFee() {
return fee;
} public void setFee(int fee) {
this.fee = fee;
} @Override
public String toString() {
return "Bill{" +
"money=" + money +
", type='" + type + '\'' +
", tradeTime='" + tradeTime + '\'' +
", payType='" + payType + '\'' +
'}';
}
}
我的思路是先用set集合对对象的某个属性中不重复的值进行筛选,然后进行计算
如果有更好的方法请在下面留言!
Java中List根据对象的属性值进行数据库group by功能的操作的更多相关文章
- 使用java中的反射获得object对象的属性值
知识点:使用java中的反射获得object对象的属性值 一:场景 这两天开发代码时,调用别人的后台接口,返回值为Object对象(json形式的),我想获得object中指定的属性值,没有对应的ge ...
- 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更
java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...
- 通过反射将一个java对象的属性值转换为一个Map
将一个java对象的属性值转换为一个Map: import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.P ...
- Js数组对象的属性值升序排序,并指定数组中的某个对象移动到数组的最前面
需求整理: 本篇文章主要实现的是将一个数组的中对象的属性值通过升序的方式排序,然后能够让程序可以指定对应的数组对象移动到程序的最前面. 数组如下所示: var arrayData= [{name: & ...
- JAVA 去除实体中类型为string的属性值中的空格
前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用java反射机制去除实体中类型为sting的属性值中的空格. java代码示例: package com.spyang.ut ...
- spring:为javabean的集合对象注入属性值
spring:为JavaBean的集合对象注入属性值 在 spring 中可以对List.Set.Map 等集合进行配置,不过根据集合类型的不同,需要使用不同的标签配置对应相应的集合. 1.创建 Ts ...
- java中的string对象深入了解
这里来对Java中的String对象做一个稍微深入的了解. Java对象实现的演进 String对象是Java中使用最频繁的对象之一,所以Java开发者们也在不断地对String对象的实现进行优化,以 ...
- Java中的Set对象去重
前言部分 Set<T> 去重相信大家一定不陌生,尤其是在 Set<String>.Set<Integer> 等等,但是在使用 Set<实体> ,在不重写 ...
随机推荐
- 前端安全配置之Content-Security-Policy(csp)
什么是CSP CSP全称Content Security Policy ,可以直接翻译为内容安全策略,说白了,就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源( ...
- Infinite V1 Release Note
游戏地址 PLAY 玩法说明 WASD 控制角色移动 更新内容 - 初步完成了角色移动(攻击状态) 开发心得 独立做游戏 其实最耽误时间的就是在自己的短板上, 对于我来说 就是3D建模和动作制作. ...
- C++之路进阶——codevs1789(最大获利)
1789 最大获利 2006年NOI全国竞赛 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 新的技术正冲击着 ...
- zzuli-小火山的跳子游戏
Description 小火山和火山火山在一块玩跳子游戏.规则如下: 1:跳子的起始位置为0,棋盘大小从1到N 2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k 3:跳 ...
- 导出Excel And 导出word
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx. ...
- PHP设计模式之:单例模式
前 些日子开始着真正的去了解下设计模式,开始么,简单地从单例模式开始,当然网上看了一些资料,单例模式比较好理解,看看介绍,然后看看代码基本也就能够理 解了,设计模式这些的花点心思基本的是能够理 ...
- Android--我的Butterknife黄油刀怎么找不到控件了!!!
1,首先说一下Butterknife这个插件真的挺好用的,不过最近几天在写demo的时候发现总是出现绑定的view是空的,当时着急写代码,也没有深究一下,直接手工findViewbyid了,今天下午写 ...
- 夺命雷公狗-----React---14--移入移出事件
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- java线程池ThreadPoolExecutor理解
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...
- C#面向编程的三大特征
在面向对象的编程中,首先要清楚地理解面向对象编程的三个基本特征: 封装, 继承, 多态! 1.封装 更确切地说,是对象封装.就是每个对象都包含自己进行某种操作时所需要的所有信息,而不依赖于其他对象来完 ...