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)) {
//相应的业务处理
}
}
}
思路二:
- 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
List集合中的数据按照某一个属性进行分组的更多相关文章
- 关于java中对list集合中的数据按照某一个属性进行分组
有的时候,我们需要在java中对集合中的数据进行分组运算. 例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的t ...
- java中对list集合中的数据按照某一个属性进行分组
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...
- Java基础知识强化之IO流笔记45:IO流练习之 把集合中的数据存储到文本文件案例
1. 把集合中的数据存储到文本文件案例: 需求:把ArrayList集合中的字符串数据存储到文本文件 ? (1)分析:通过题目的意思我们可以知道如下的一些内容,ArrayList集合里存储的是字 ...
- 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ...
- 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load
package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...
- sql之将一个表中的数据注入另一个表中
sql之将一个表中的数据注入另一个表中 需求:现有两张表t1,t2,现需要将t2的数据通过XZQHBM相同对应放入t1表中 t1: t2: 思路:left join 语句: select * from ...
- 为data中的某一个对象添加一个属性不起作用——this.$set的正确使用
this.$set(obj, key, value) 我们在项目开发的过程中,经常会遇到这种情况:为data中的某一个对象添加一个属性 <template> <div class=& ...
- Python强化训练笔记(一)——在列表,字典,集合中筛选数据
列表,字典,集合中根据条件筛选数据,如下所示 列表:[-10,2,2,3,-2,7,6,9] 找出所有的非负数 字典:{1:90,2:55,3:87...} 找出所有值大于60的键值对 集合:{2,3 ...
- c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)
1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...
随机推荐
- VSCode配置简单的vue项目
VSCode配置简单的vue项目 https://www.cnblogs.com/wnxyz8023/p/9989447.html 由于最近要使用的项目框架为前后端分离的,采用的是vue.js+web ...
- Redux 和 ngrx 创建更佳的 Angular 2
Redux 和 ngrx 创建更佳的 Angular 2 翻译:使用 Redux 和 ngrx 创建更佳的 Angular 2 原文地址:http://onehungrymind.com/build- ...
- 如何对手机使用adb
因为要配合前端做测试,所以我需要在本机中安装adb驱动,以便可以连接手机进行各种操作. 好吧...装adb驱动这块当时我没有把流程给做记录...郁闷,下次再安装的时候再谷歌吧. 使用的简单脚本就是 有 ...
- python常用库安装网址
python常用库安装网址如下: http://pypi.python.org/pypi
- P2429 制杖题
P2429 制杖题这个题用线性筛会WA一个点,因为这个题是给定的质数集,最大的质数会比当前的倍数大,就会出现上面的情况.怎办?判重用set啊!set+线性筛就过掉了.16ms #include< ...
- C#泛型的抗变与协变
C#泛型的抗变与协变 学习自 C#本质论6.0 https://www.cnblogs.com/pugang/archive/2011/11/09/2242380.html Overview 一直以来 ...
- css基础 行内元素 块级元素
1.行内元素(内联元素 inlineElement) 特点:不占据一行,无法设置宽高及行高,其宽度随着内容增加,高度随字体大小而改变,margin只对左右起作用,上下无效. 常见有: a - 锚点,b ...
- Docker系列之(五):使用Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- ios手机填坑总结
1. 日期格式 ios系统.safari只能识别"2018/10/15 00:00:00",不能识别"2018-10-15 00:00:00",所以需要转换格式 ...
- CAT架构的应用与实践 IT大咖说 - 大咖干货,不再错过
CAT架构的应用与实践 IT大咖说 - 大咖干货,不再错过 http://www.itdks.com/dakashuo/new/dakalive/detail/594