• List集合中的数据按照某一个属性进行分组


    有的时候,我们需要在java中对集合中的数据进行分组运算。例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的type属性进行分组,计算money的总和。有以下两种思路:

    思路一:

    先计算集合中所有的type情况,然后对于每一种type去遍历集合计算money的和。伪代码如下:

    Map<String,String> typeMap = new HashMap<String,String>();

    fro (Bill bill : billList) {

    typeMap.put(bill.getType,"");

    }

    fro(String t:typeMap.keySet) {

    for (Bill bill : billList) {

    if (bill.getType.equals(t)) {

    //相应的业务处理

    }

    }

    }

    思路二:

    [java] view plain copy
     
    1. public class test {    
    2.     public static void main(String[] args) {    
    3.         List<Bill> list = new ArrayList<Bill>();    
    4.         Bill b = new Bill();    
    5.         b.setType("A");    
    6.         b.setMoney(1);    
    7.         list.add(b);    
    8.         b = new Bill();    
    9.         b.setType("B");    
    10.         b.setMoney(2);    
    11.         list.add(b);    
    12.         b = new Bill();    
    13.         b.setType("C");    
    14.         b.setMoney(3);    
    15.         list.add(b);    
    16.         b = new Bill();    
    17.         b.setType("A");    
    18.         b.setMoney(1);    
    19.         list.add(b);    
    20.         b = new Bill();    
    21.         b.setType("B");    
    22.         b.setMoney(2);    
    23.         list.add(b);    
    24.         b = new Bill();    
    25.         b.setType("C");    
    26.         b.setMoney(3);    
    27.         list.add(b);    
    28.     
    29.     
    30.         List<Bill> bi = new ArrayList<Bill>();    
    31.         for (Bill bill : list) {    
    32.             boolean state = false;    
    33.             for (Bill bills : bi) {    
    34.                 if(bills.getType().equals(bill.getType())){    
    35.                     int money = bills.getMoney();    
    36.                     money += bill.getMoney();    
    37.                     bills.setMoney(money);    
    38.                     state = true;    
    39.                 }    
    40.             }    
    41.             if(!state){    
    42.                 bi.add(bill);    
    43.             }    
    44.         }    
    45.         for (Bill bill : bi) {    
    46.             System.out.println(bill.getType() +"    " +bill.getMoney());    
    47.         }    
    48.     }    
    49. }   


    运行结果:

    A    2
    B    4
    C    6

  • 相关阅读:
    面试点滴
    算法之归并排序
    博客园代码高亮样式更换-测试
    MacOS 10.12 设置找不到 任何来源 的话 这么操作 教程
    HTTP代理协议 HTTP/1.1的CONNECT方法
    Linux命令
    Linux命令
    Linux命令
    vmware虚拟机linux桥接模式设置
    GDB调试 (七)
  • 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/7911617.html
Copyright © 2020-2023  润新知