文档章节

获取多个集合列表的笛卡尔积

BakerZhu
 BakerZhu
发布于 08/21 20:07
字数 249
阅读 33
收藏 0

获取多个集合笛卡尔积

电商中典型业务场景:商品搜索

  • 单属性属性值之间为并查询
  • 不同属性的属性值之间查询为与查询
import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: bakerZhu
 * @description: 获取集合笛卡尔积
 * @time: 2018年08月20日
 * @modifytime:
 */
public class Descartes {
	public  static void descartes(List<List<Long>> dimvalue, List<List<Long>> result, int layer, List<Long> curList) {
		if (layer < dimvalue.size() - 1) {
			if (dimvalue.get(layer).size() == 0) {
				descartes(dimvalue, result, layer + 1, curList);
			} else {
				for (int i = 0; i < dimvalue.get(layer).size(); i++) {
					List<Long> list = new ArrayList<Long>(curList);
					list.add(dimvalue.get(layer).get(i));
					descartes(dimvalue, result, layer + 1, list);
				}
			}
		} else if (layer == dimvalue.size() - 1) {
			if (dimvalue.get(layer).size() == 0) {
				result.add(curList);
			} else {
				for (int i = 0; i < dimvalue.get(layer).size(); i++) {
					List<Long> list = new ArrayList<Long>(curList);
					list.add(dimvalue.get(layer).get(i));
					result.add(list);
				}
			}
		}
	}
}

© 著作权归作者所有

共有 人打赏支持
BakerZhu
粉丝 95
博文 512
码字总数 413292
作品 0
通州
程序员
【理论】离散数学中的二元关系

这篇文章将了解到以下方面的知识 01 二元关系的定义 02 笛卡尔积定义 03 二元关系的表示方式 0301 二元关系是笛卡尔积的子集 0302 等价关系与集合上的划分一一对应 二元关系定义 由两个元素x...

needrunning
2017/12/14
0
0
杂事杂知识,

以前在写博客中,自己感觉函数,SQL查询常用的没必要多看多学习,今天想处理一个简单笛卡尔积问题,炸了!下面聊聊解决和感觉有意义的知识点 说问题拉点知识关于rownum的,这是Oracle系统查询...

长路慢
02/02
0
0
oracle多表查询之经典面试题

一、笛卡尔积 概念 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。...

lkee6760
2017/04/26
0
0
关系数据库

关系数据库: 关系模型由:关系数据结构、关系操作集合、关系完整性约束三部分。 关系模型三个方面:完整性约束、关系数据库系统中实现关系操作的一种语言、关系演算。 完整性约束: 关系 域...

mehome
2017/04/17
0
0
[Spark]Spark core的算子总结

转换过滤算子 ByKey算子 获取算子 两个集合算子 单独集合处理算子 partition管理算子

zemel
2016/09/01
27
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
116
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部