java8 多字段分组+count

简介: java8 多字段分组+count


java8 多字段分组+count


Mysql分组计数

sql语句

SELECT follow_user,action_clue_type,COUNT(DISTINCT clue_id) followClueNum,GROUP_CONCAT(DISTINCT clue_id)
FROM crm_clue_follow_record1 WHERE DATE(create_time)=DATE('2021-03-02') AND follow_user=411 GROUP BY follow_user,action_clue_type;


执行结果

image.png

java8分组实现

Map<Long, Map<Long, Long>> collect1 = list.stream().collect(Collectors.groupingBy(ClueFollowRecord::getFollowUser,
          Collectors.groupingBy(ClueFollowRecord::getActionClueType, Collectors.counting())));
Map<Long, Map<Long, List<Long>>> collect = list.stream().collect(Collectors.groupingBy(ClueFollowRecord::getFollowUser,
          Collectors.groupingBy(ClueFollowRecord::getActionClueType, Collectors.mapping(ClueFollowRecord::getClueId, Collectors.toList()))));
System.out.println(JSON.toJSONString(collect1));
System.out.println(JSON.toJSONString(collect));


返回结果:

{411:{161:1,173:1,381:2}}
{411:{161:[5106081],173:[2021985],381:[20097,240257]}}


通过java8虽然不能完全实现sql语句相同效果,但是基本可以替代sql语句,也算达到了预期目标。


相关文章
|
4月前
|
安全 Java 编译器
java访问字段
java访问字段
31 6
|
4月前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
4月前
|
Java Go PHP
Java分组匹配
Java分组匹配
32 5
|
5月前
|
算法 Java
【Java集合类面试十八】、ConcurrentHashMap是怎么分段分组的?
ConcurrentHashMap通过分段锁(Segment)实现高效并发访问,get操作无需加锁,而put操作首先判断是否需要扩容,然后通过两次hash定位并尝试使用CAS和锁机制安全地添加元素。
|
5月前
|
SQL Java Apache
实时计算 Flink版操作报错合集之使用parquet时,怎么解决报错:无法访问到java.uti.Arrays$ArrayList类的私有字段
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
7月前
|
Java
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
|
6月前
|
存储 Java
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
|
7月前
|
Java BI Serverless
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
|
7月前
|
Java Spring 容器
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)