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 ...
随机推荐
- Linux系统运维笔记(四),CentOS 6.4安装Nginx
Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...
- kafka 查看队列信息
https://blog.csdn.net/getyouwant/article/details/81209286?utm_source=blogxgwz8
- 可视化工具gephi源码探秘(二)
在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码 ...
- 最长子回文字符串(Manacher’s Algorithm)
# # 大佬博客: https://www.cnblogs.com/z360/p/6375514.html https://blog.csdn.net/zuanfengxiao/article/det ...
- 火狐浏览器接口测试工具Poster
- MySQL Replication(Master与Slave基本原理及配置)
MySQL Replication(Master与Slave基本原理及配置) 1. 主从mysql server的工作原理:(如图及其过程分析) 过程: Mysql的复制(replication ...
- bzoj 3285 离散对数解指数方程
/************************************************************** Problem: 3285 User: idy002 Language: ...
- Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
D. Mahmoud and a Dictionary 题目连接: http://codeforces.com/contest/766/problem/D Description Mahmoud wa ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar 水题
A. Checking the Calendar 题目连接: http://codeforces.com/contest/724/problem/A Description You are given ...
- IMG镜像写盘工具physdiskwrite,用于MikroTik RouterOS的安装(Windows)
常用img的备份: 1.linux下使用dd,Windows下使用WinImage 2.或者还有很多,比如再生龙等等. img还原: 1.Win32DiskImager 2.physdiskwrite ...