社区首页 >问答首页 >Java 8 POJO对象根据常用的多个键组合和一个字段求和来过滤pojo

Java 8 POJO对象根据常用的多个键组合和一个字段求和来过滤pojo
EN

Stack Overflow用户
提问于 2020-05-03 18:53:39
回答 1查看 76关注 0票数 0

我有一个班级的销售。

代码语言:javascript
代码运行次数:0
复制
Class Sales {
String month; String year; String city; String state; String sales;
}

有一个销售对象列表

代码语言:javascript
代码运行次数:0
复制
"result" :[ 

{
"month" : "JAN",
"year":  "2000",
"state" : "State1",
"city" :  "City1",
"sales" : "10"
}, 
{
"month" : "JAN",
"year" :  "2000",
"state" : "State1",
"city" :  "City2",
"sales" : "20"
},
{
"month" : "JAN",
"year" :  "2000",
"state" : "State2",
"city" :  "City3",
"sales" : "30",
},
{
"month" : "JAN",
"year" :  "2000",
"state" : "State2",
"city" :  "City1",
"sales" : "40"
},
{
"month" : "FEB",
"year" :  "2000",
"state" : "State1",
"city" :  "City1",
"sales" : "5",
},
{
"month" : "FEB",
"year" :  "2000",
"state" : "State1",
"city" :  "City2",
"sales" : "15"
}
]

现在我想要达到的是上图中描述的销售总额,我如何使用java 8实现同样的目标。我尝试了按JAVA 8的功能分组,但没有成功。

代码语言:javascript
代码运行次数:0
复制
    list.stream()
          .collect(Collectors.groupingBy(p -> p.getMonth(), Collectors.groupingBy(p -> p.getSales(),
                                            Collectors.summingInt(foo->foo.getTotalSales()))))
          .forEach((id,total)->System.out.println(id+"\t"+total));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-03 19:35:19

您应该更改表示销售的类型。

代码语言:javascript
代码运行次数:0
复制
String sales;

应该是

代码语言:javascript
代码运行次数:0
复制
int sales;

代码语言:javascript
代码运行次数:0
复制
long sales;

对于自然由数值类型表示的事物,String不应该是该类型。

您可以使用groupingBy(),但您应该将其应用于两个不同的流,因为您希望执行两种销售金额:按州-城市计算的销售金额(电子表格中的行)和按月计算的销售金额(电子表格中的列)。

代码语言:javascript
代码运行次数:0
复制
Map<String, Integer> salesAmountByMonth = 
list.stream()
    .collect(groupingBy(Sale::getMonth,
                        summingInt(Sale::getSales)));  

Map<String, Map<String,Integer>> salesAmountByStateByCity = 
list.stream()
    .collect(groupingBy(Sale::getState,
                        groupingBy(Sale::getCity,
                                   summingInt(Sale::getSales))));     
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61579954

复制
相关文章
DTO与值对象和POJO比较
本文想澄清DTO与Value Object与POCO的区别,其中DTO代表数据传输对象,而POCO是Plain Old CLR Object,在Java环境中也称为POJO。
lyb-geek
2018/12/24
2.2K0
java pojo 是什么_POJO是什么,javabean是什么,以及POJO与javabean的区别
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
全栈程序员站长
2022/08/24
4490
java中的pojo是什么意思_java中的POJO是什么意思?
簡單的Java對象(Plain Ordinary Java Objects)實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。
全栈程序员站长
2022/09/01
5.5K0
Java中的POJO是什么?[通俗易懂]
在这个简短的教程中,我们将研究“普通Java对象”(Plain Old Java Object)的定义,简称POJO。我们将看看POJO与JavaBean的比较,以及如何将POJO转换为JavaBean。
全栈程序员站长
2022/08/24
1.3K0
POJO简介
一:什么是POJO POJO的名称有多种,pure old java object 、plain ordinary java object 等。 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。 POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。
全栈程序员站长
2022/09/01
1.6K0
POJO、Java Bean是如何定义的
之前介绍过DTO、PO、VO的转换,在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们Java Bean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。
码农小胖哥
2022/10/05
7040
jface databinding:部分实现POJO对象的监测
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53839050
10km
2019/05/25
4470
jface databinding/PojoBindable实现对POJO对象的支持
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53811946
10km
2019/05/25
5380
使用POJO对象绑定请求参数值(6)
SpringMVC 会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性
桑鱼
2020/03/18
4300
Java 8 的 java.util.function.* POJO 的反射新方法
上代码,看例子 写一个普通的 POJO public class City { private String name; private String code; public City() { } public City(String name, String code) { this.name = name; this.code = code; } public String getName() {
chuchur
2022/10/25
2350
POJO类定义
POJO(Plain Ordinary Java Object)即普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO。
MashiroT
2022/10/28
1.1K0
POJO、JavaBen、Entity的区别
POJO (Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。不允许有业务方法,也不能携带connection之类的方法,实际就是普通JavaBeans。POJO类中有属性和get、set方法,但是没有业务逻辑。
微醺
2019/07/02
4.3K0
什么是POJO类?
简单的Java对象(Plain Old Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 POJO是Plain Old Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,并且作者在这里提到的pojo是用来实现业务逻辑(business logic )的。
全栈程序员站长
2022/09/02
1.2K0
JAVABEAN EJB POJO区别
    POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。
yaphetsfang
2020/07/30
7320
JPA自动生成POJO
程序员朱永胜
2023/08/21
1790
JPA自动生成POJO
究竟什么是POJO?
大家好,又见面了,我是你们的朋友全栈君。 POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。 我在做J2EE培训中发现我的很多学生问我什么是POJO,后来我在写书(《Spring2初学者实践教材》和《Spring2初学者实践教材》)的时候发现POJO这个概念无法回避。现在网上对于POJO的解释很多,但是很多都是有错误的或者不够准确。对此我一开始也是存在误区的,我原来是这样理解的: POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。 所以下面的代码被认为是POJO了。
全栈程序员站长
2022/09/01
4250
JSON转Java POJO就是这么简单快捷
作为一名 Java 后端程序员经常会有封装一些调用第三方接口的实际需求。比如胖哥最近对微信支付 V3 的封装。
码农小胖哥
2021/02/01
1.6K0
Hibernate 逆向工程生成POJO类和映射文件
public class Guestbook implements java.io.Serializable {
Hongten
2018/09/18
7580
问与答99:如何根据组合条件求和?
Q:如下图1所示的数据排列,每组数据都由“月份、分类、字母、数值”组成,但是月份在单独的行,其他的数据分布在各行中且存在重复。
fanjy
2021/03/12
2.7K0
点击加载更多

相似问题

Java8 -基于POJO更新多个列表

22

Java 8流groupBy pojo

20

Java POJO建模-对象列表与每个对象的多个字段

13

映射多个POJO中的选定字段以创建一个POJO

11

Java : POJO对象的好处

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档