我想要生成两个Int元组的Vector。现在,我这样做:
(0 until 100).map(x => (x+1 until 100).map(y => (x,y))).flatten.filter { ... }
我想知道是否有更有效的方法来做到这一点。我感觉"扁平"减慢代码速度。我是否必须使用" flatten"或者我可以使用其他东西吗?
PS1:如果我不使用"展平",我有:矢量(矢量(a,b),矢量(c,d),...)而不是矢量(() A,b),(C,d),...)。
PS2:我在第二个生成器中使用(x + 1到100),因为我对元组(a,b)和(b,a)不感兴趣。
答案 0 :(得分:7)
http://myapplication/Upload/ToFolder?entityName=new_policy&entityGuid=4451E282-80B0-E611-80E8-C4346BACFC18&systemUserId=1ADEC6E1-008C-430D-A163-D7BA7AD75689
答案 1 :(得分:0)
map(f).flatten
可以缩短为flatMap(f)
,因此您将获得
(0 until 100).flatMap(x => (x+1 until 100).map(y => (x,y))).filter(...)
这相当于Tzach Zohar的答案,但你可以看到这种关系。将filter
移到flatMap
内也可能是值得的(它会被调用更多次,但你会得到更小的中间集合。)