有的时候,我们需要在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. O026、Nova组件详解

    参考https://www.cnblogs.com/CloudMan6/p/5436855.html   本节开始,我们将详细讲解 Nova 的各个子服务.   前面架构概览一节知道 Nova 有若干 ...

  2. 【ExtJs】获取grid选中的records

    var records = me.grid.getSelectionModel().getSelection(); //获取所有选中的行 var record =records[0]; //获取选中行 ...

  3. 可能是全网最全的http面试答案

    HTTP有哪些方法? HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNE ...

  4. TVM设备添加以及代码生成

    因为要添加的设备是一种类似于GPU的加速卡,TVM中提供了对GPU编译器的各种支持,有openCl,OpenGL和CUDA等,这里我们选取比较熟悉的CUDA进行模仿生成.从总体上来看,TVM是一个多层 ...

  5. 在 Sublime Text 3 中使用 SublimeClang 插件

    SublimeClang 是 Sublime Text 中唯一的 C/C++ 自动补全插件,功能强大,自带语法检查功能,可惜目前作者停止更新了,而且只支持 Sublime Text 2.今晚在 ST ...

  6. Spinner simpleAdapte适配器 下拉列表

    public class MainActivity extends AppCompatActivity { private TextView text; private Spinner spinner ...

  7. GridView 二维排布

    与ListView一维排布相对 public class MainActivity extends Activity implements AdapterView.OnItemClickListene ...

  8. Django REST Framework(DRF)_第四篇

    DRF分页(总共三种) PageNumberPagination(指定第n页,每页显示n条数据) 说明 既然要用人家的那么我们就先来看下源码,这个分页类源码中举例通过参数指定第几页和每页显示的数据:h ...

  9. Tunnel Warfare HDU - 1540 (线段树处理连续区间问题)

    During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...

  10. Google Chrome Keyboard Shortcuts

    Navigation To do this Press this Open a new window Ctrl + N Open a new tab Ctrl + T Open a new windo ...