业务开发中经常会遇到列项聚合的问题,所以常用的一些思路整理出来.
集合纵向聚合
系统中可能存在不同的业务流程聚合出来的(K,V)结构数据, 然后需要汇总, 可以采用Java8进行流式处理
逻辑抽象
1 | /** |
测试示例
1 |
|
执行结果
1 | 根据Key值聚合结果:{"L1":[1,2,3,3,4,5],"L2":[1,1,2,2]} |
对象纵项聚合
我们的业务系统可能纵向扩好几个表,但是各个表之间又有纵向key关联, 为了不进行太多JOIN方式的聚合, 异步可以进行单维度查询,然后最后结果并行聚合
纵向装配方案定义
- 定义对象唯一规范
1 | public interface Atomicity { |
- 定义可纵向装配行为
1 | public interface Assemble <D extends Atomicity> extends Atomicity { |
- 定义纵向装配逻辑
1 | public class Assembly { |
纵向装配使用示例
- 对象实现纵向装配行为
1 |
|
- 对象纵向装配行为测试
1 | public static void main(String[] args) { |
- 执行结果
1 | 目标集合为空:[] |
可以看到,数据根据我们定义的唯一性规范进行了列项装配.实际开发中对于不同的列数据可以进行异步处理. 然后展示的时候聚合异步处理的结果