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<实体> ,在不重写 ...
随机推荐
- MySQL 联合索引详解
MySQL 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c ...
- 第九章伪代码编程过程 The PseudoCode Programming Process
目录: 1.创建类和子程序的步骤概述 2.伪代码 3.通过伪代码编程过程创建子程序 4.伪代码编程过程的替代方案 一.创建类和子程序的步骤概述 (1)创建一个类的步骤 1.创建类的总体设计 2.创建类 ...
- jdbc 数据的增删改查的Statement Resultset PreparedStatement
完成数据库的连接,就马上要对数据库进行增删改查操作了:先来了解一下Statement 通过JDBC插入数据 (这里提供一个查找和插入方法) Statement:用于执行sql语句的对象: *1.通过C ...
- GetLastError()函数返回值及含义
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值, ...
- kali 渗透的一些笔记
kali实战笔记 17:55 2016/7/19 by: _Silvers kali系统安装后的配置及美化安装vmwareToolstar zxvf VMwareTools-sfsfsfasfasfs ...
- [原创]Visual Studio 使用 Just My Code引起无法断点
今天遇到的问题,同样的代码,在一台机器上用Release配置可以命中断点,在另一台上用Release断点就都失效了.后来发现是因为断点失效的机器上设置了Just My Code.在Debug-Opti ...
- form提交的几种方法
一. form表单中有 type是submit类型的button,点击 submit,从而会post数据,引发回传. <form action="?" name=" ...
- “error LNK2019: 无法解析的外部符号”之分析
最近在用VS 2008开发,初学遇到不少问题,最头疼的问题之一就是:LNK2019. 百度一下讲的并不够全面,反正都没解决我的问题. error LNK2019问题在VC 6.0中是error LNK ...
- Java数据结构之字符串模式匹配算法---Brute-Force算法
模式匹配 在字符串匹配问题中,我们期待察看源串 " S串 " 中是否含有目标串 " 串T " (也叫模式串).其中 串S被称为主串,串T被称为子串. 1.如果在 ...
- socket网络编程
一.客户端/服务器架构 C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(Web服务) 最常用的软件服务器就是Web服务器,一台机器里放了一些网页或Web应用程序,然后启动服务,这样 ...