scala – 生成可能的组合

我有几个哈希映射,我需要生成以下组合:

A: [x->1,y->2,...]
B: [x->1,a->4,...]
C: [x->1,b->5,...]
...

一些可能的组合:

A+B; A; A+C; A+B+C...

对于每个组合,我需要生成联合散列映射,并在两个散列映射中使用相同的键执行键值对的操作.

我能想到的就是使用二进制计数器并将数字映射到相应的哈希映射:

001 -> A
101 -> A,C
...

虽然这个解决方案有效,但当我有超过100个哈希映射时,模运算很耗时.我是Scala的新手,但我相信必须有更好的方法来实现这一目标吗?

解决方法

好吧,想想你的地图有多少组合:假设你有N个地图.

(the maps individually) + (pairs of maps) + (triples of maps) + ... + (all the maps)

这当然是

(N choose 1) + (N choose 2) + ... + (N choose N-1)

其中N选择M定义为:

N! / (M! * (N-M)!)

对于N = 100和M = 50,N选择M超过100,000,000因此“耗时”实际上并不能解决问题!

哦,这假设排序是无关紧要的 – 即A B等于B A.如果这个假设是错误的,那么你所面临的排列明显多于可见宇宙中的粒子

为什么scala可能会帮助解决这个问题:它的并行集合框架!

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...