有的时候,我们需要在java中对集合中的数据进行分组运算。

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

思路一:

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

  1. Map<String,String> typeMap = new HashMap<String,String>();
  2.  
  3. fro (Bill bill : billList) {
  4.  
  5. typeMap.put(bill.getType,"");
  6.  
  7. }
  8.  
  9. fro(String t:typeMap.keySet) {
  10.  
  11. for (Bill bill : billList) {
  12.  
  13. if (bill.getType.equals(t)) {
  14.  
  15. //相应的业务处理
  16.  
  17. }
  18.  
  19. }
  20.  
  21. }

  

思路二:

  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. List<Bill> bi = new ArrayList<Bill>();
  30. for (Bill bill : list) {
  31. boolean state = false;
  32. for (Bill bills : bi) {
  33. if(bills.getType().equals(bill.getType())){
  34. int money = bills.getMoney();
  35. money += bill.getMoney();
  36. bills.setMoney(money);
  37. state = true;
  38. }
  39. }
  40. if(!state){
  41. bi.add(bill);
  42. }
  43. }
  44. for (Bill bill : bi) {
  45. System.out.println(bill.getType() +" " +bill.getMoney());
  46. }
  47. }
  48. }

运行结果:

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. ubuntu18.3完美安装qq

    创建一个脚本全自动安装 #!/bin/bash # 安装 deepin-wine sudo mkdir deepin-wine deepin-qq cd deepin-wine git clone h ...

  2. CTF 常见操作总结

    一般流程 首先看header, veiwsource, 目录扫描 有登陆, 尝试sql注入&爆破 有数据库, 必然sql注入? 普通sql注入 判断是否存在回显异常 尝试单双引号 查是字符型? ...

  3. JavaWeb【六、JavaBean】

    简介 JavaBean是符合设计原则的Java类.好处是提高可复用性,减少冗余,增强可维护性. JavaBean设计原则 共有类 无参共有构造 属性私有 getter和setter方法 JSP动作元素 ...

  4. Lua游戏逆向及破解方法介绍

    Lua游戏逆向及破解方法介绍   背景介绍 随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台.Lua脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...

  5. MyBatis-01-简介

    基础知识: JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 MyBatis? MyBat ...

  6. 服务器syns to listen sockets drop导致创建socket失败

    在一次测试执行过程中,发现服务器TCP发送队列较长,执行netstat -s | grep LISTEN,发现有SYNs包被丢弃,但是没有times the listen queue of a soc ...

  7. Winforms界面开发DevExpress v19.2:图表、编辑器功能增强

    DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...

  8. 运行别人的Vue项目

    步骤一:先 安装 cnpm cmd命令下 输入  npm install -g cnpm --registry=http://registry.npm.taobao.org (由于npm有些资源被屏蔽 ...

  9. python的序列化模块

    最近机器学习的模型需要序列化和反序列化,因为写个博客总结一下几个模型和数据等序列化的模块.

  10. springboot与springcloud版本不对应导致报错java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V

    springboot启动报错: 10:31:50.221 [main] ERROR org.springframework.boot.SpringApplication - Application r ...