Java中List根据对象的属性值进行数据库group by功能的操作

Posted 孟大凡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中List根据对象的属性值进行数据库group by功能的操作相关的知识,希望对你有一定的参考价值。

  1 public class test {
  2     public static void main(String[] args) {
  3 
  4         List<Bill> list = new test().setObject();
  5 
  6         Set<String> set = new HashSet();
  7 
  8         for (Bill bills : list) {
  9             set.add(bills.getTradeTime().substring(0, 8));
 10         }
 11 
 12         List list1 = new ArrayList();
 13         int paySuccess = 0;
 14         int dfSuccess = 0;
 15         int fee = 0;
 16         int count = 0;
 17         //遍历set集合中的日期
 18         for (String a : set) {
 19             for (Bill bill : list) {
 20                 if (a.equals(bill.getTradeTime().substring(0, 8))) {
 21                     paySuccess += bill.getMoney();
 22                     fee += bill.getFee();
 23                     count++;
 24                     if ("承兑或交易成功".equals(bill.getType()))
 25                         dfSuccess += bill.getMoney();
 26                 }
 27             }
 28             Object[] objects = new Object[10];
 29             objects[0] = new BigDecimal(paySuccess);
 30             objects[1] = new BigDecimal(dfSuccess);
 31             objects[2] = new BigDecimal(fee);
 32             objects[3] = new BigDecimal(paySuccess-fee);
 33             objects[4] = a;
 34             list1.add(objects);
 35             System.out.println("支付成功金额:" + objects[0] + "\\t" + "承兑或交易成功: " + objects[1] + "\\t" + objects[4] + "\\t" + "手续费:" + objects[2] + "\\t" + "商户结算" +
 36                     "金额:" + objects[3] + "\\t" + "交易笔数:" + count + "\\t日期:" + a);
 37             paySuccess = 0;
 38             dfSuccess = 0;
 39             fee = 0;
 40             count = 0;
 41         }
 42         String date = null;
 43         System.out.println(date == null || date.isEmpty());
 44     }
 45 
 46     public List<Bill> setObject() {
 47         List<Bill> list = new ArrayList<Bill>();
 48         Bill bill = new Bill();
 49         bill.setTradeTime("201605050203");
 50         bill.setMoney(2);
 51         bill.setPayType("支付成功");
 52         bill.setType("承兑或交易成功");
 53         bill.setFee(1);
 54         list.add(bill);
 55 
 56         bill = new Bill();
 57         bill.setTradeTime("201605060203");
 58         bill.setMoney(3);
 59         bill.setType("");
 60         bill.setPayType("支付成功");
 61         bill.setFee(1);
 62         list.add(bill);
 63 
 64         bill = new Bill();
 65         bill.setMoney(4);
 66         bill.setTradeTime("201605050203");
 67         bill.setPayType("支付成功");
 68         bill.setType("承兑或交易成功");
 69         bill.setFee(1);
 70         list.add(bill);
 71 
 72         bill = new Bill();
 73         bill.setType("");
 74         bill.setPayType("支付成功");
 75         bill.setTradeTime("201605060203");
 76         bill.setMoney(4);
 77         bill.setFee(1);
 78         list.add(bill);
 79         return list;
 80     }
 81 }
 82 
 83 class Bill {
 84     int money;
 85     String type;
 86     String tradeTime;
 87     String payType;
 88     int fee;
 89 
 90     public String getPayType() {
 91         return payType;
 92     }
 93 
 94     public void setPayType(String payType) {
 95         this.payType = payType;
 96     }
 97 
 98     public int getMoney() {
 99         return money;
100     }
101 
102     public void setMoney(int money) {
103         this.money = money;
104     }
105 
106     public String getType() {
107         return type;
108     }
109 
110     public void setType(String type) {
111         this.type = type;
112     }
113 
114     public String getTradeTime() {
115         return tradeTime;
116     }
117 
118     public void setTradeTime(String tradeTime) {
119         this.tradeTime = tradeTime;
120     }
121 
122     public int getFee() {
123         return fee;
124     }
125 
126     public void setFee(int fee) {
127         this.fee = fee;
128     }
129 
130     @Override
131     public String toString() {
132         return "Bill{" +
133                 "money=" + money +
134                 ", type=\'" + type + \'\\\'\' +
135                 ", tradeTime=\'" + tradeTime + \'\\\'\' +
136                 ", payType=\'" + payType + \'\\\'\' +
137                 \'}\';
138     }
139 }
View Code

我的思路是先用set集合对对象的某个属性中不重复的值进行筛选,然后进行计算

 

如果有更好的方法请在下面留言!

以上是关于Java中List根据对象的属性值进行数据库group by功能的操作的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何改变List里对象的属性值

java按照list集合中的对象属性进行去重

java按照list集合中的对象属性进行去重

Java关于list集合根据集合元素对象的某个或多个属性进行排序的工具类

java List对象排序的问题……

C# list<>根据对象的某个属性排序