有的时候,我们需要在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)) {

//相应的业务处理

}

}

}

  

思路二:

public class test {
    public static void main(String[] args) {
        List<Bill> list = new ArrayList<Bill>();
        Bill b = new Bill();
        b.setType("A");
        b.setMoney(1);
        list.add(b);
        b = new Bill();
        b.setType("B");
        b.setMoney(2);
        list.add(b);
        b = new Bill();
        b.setType("C");
        b.setMoney(3);
        list.add(b);
        b = new Bill();
        b.setType("A");
        b.setMoney(1);
        list.add(b);
        b = new Bill();
        b.setType("B");
        b.setMoney(2);
        list.add(b);
        b = new Bill();
        b.setType("C");
        b.setMoney(3);
        list.add(b);  

        List<Bill> bi = new ArrayList<Bill>();
        for (Bill bill : list) {
            boolean state = false;
            for (Bill bills : bi) {
                if(bills.getType().equals(bill.getType())){
                    int money = bills.getMoney();
                    money += bill.getMoney();
                    bills.setMoney(money);
                    state = true;
                }
            }
            if(!state){
                bi.add(bill);
            }
        }
        for (Bill bill : bi) {
            System.out.println(bill.getType() +"    " +bill.getMoney());
        }
    }
} 

运行结果:

A    2
B    4
C    6

关于java中对list集合中的数据按照某一个属性进行分组的更多相关文章

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

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

  2. java中对list集合中的数据按照某一个属性进行分组

    import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...

  3. java如何对List集合中的元素进行排序(请收藏)

    在java开发中有时候我们需要对List集合中的元素按照一定的规则进行排序,比如说有个Person的集合,我们要根据Person的age属性进行排序输出,这就需要用到Java中提供的对集合进行操作的工 ...

  4. java代码实现将集合中的重复元素去掉

    package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...

  5. 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值

    不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...

  6. java:替换List集合中的某个任意值(对象)

    定义replaceAll方法,将传入的新值替换集合中的老值(list,old,new) private static <E> void replaceAll(List<E> l ...

  7. 19SpringMvc_在业务控制方法中收集List集合中包含JavaBean参数

    本文要实现的功能是给一张表单:

  8. redis中插入用户集合的语句,有四个属性

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

  9. 【java基础 17】集合中各实现类的性能分析

    大致的再回顾一下java集合框架的基本情况 一.各Set实现类的性能分析 1.1,HashSet用于添加.查询 HashSet和TreeSet是Set的两个典型实现,HashSet的性能总是比Tree ...

随机推荐

  1. luogu题解P1032字串变换--BFS+STL:string骚操作

    题目链接 https://www.luogu.org/problemnew/show/P1032 分析 这题本来很裸的一个BFS,发现其中的字符串操作好烦啊.然后就翻大佬题解发现用STL中的strin ...

  2. java实现spark常用算子之Repartitions

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  3. 输入列号得到excel对应的字母列

    zexcel_cell_column 类型是INT4 FUNCTION ZGET_EXCEL_COL. *"----------------------------------------- ...

  4. jdk中集成的jre和单独安装的jre有什么区别?

    jdk 和 jre 是什么? 有什么区别? jre Jre 是java runtime environment, 是java程序的运行环境.既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有 ...

  5. vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理

    最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式: 该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端 ...

  6. contextlib:上下文管理器工具

    介绍 contextlib模块包含的工具可以用于处理上下文管理器和with语句 上下文管理器API ''' 上下文管理器(context manager)负责管理一个代码块中的资源,会在进入代码块时创 ...

  7. linux 启动tomcat

    操作步骤: 第一步:进入tomcat的bin目录 cd /usr/local/tomcat/bin 第二步:使用tomcat关闭命令 ./shutdown.sh 第三步:查看tomcat是否关闭 ps ...

  8. 在Python中,如何用一行代码去判定整数二进制中的连续 1

    利用字节位操作如何判断一个整数的二进制是否含有至少两个连续的1 的方法有多种,大家第一反应应该想到的是以下的第一种方法. 方法一:从头到尾遍历一遍每一位即可找出是否有连续的1存在 这个方法是最普遍的. ...

  9. JS批量绑定事件

    ,,,,] for(var j in a){ $("#" + j).click(function () { // 前提是先动态生成id是j的标签 var id_cm = $(thi ...

  10. ora-01847:月份中日的值必须介于 1 和当月最后一日之间

    今天解决了一个奇葩问题: ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间 将数据从一个视图倒入到一个同结构的表中,但是老报错,也就那么几个字段,肉眼真看不出来什么问题,但是既然报这 ...