当前位置: 首页 > 面试题库 >

使用Java Lambda创建两个(或更多)列表的笛卡尔积的集合

邢臻
2023-03-14
问题内容

我可以通过以下方法轻松地在Scala中实现此目标:

def permute(xs: List[Int], ys: List[Int]) = {
  for {x <- xs; y <- ys} yield (x,y)
}

因此,如果我给它{1,2},{3,4},我将返回{1,3},{1,4},{2,3},{2,4}

我希望能够使用流将其转换为java 8。

我有点困难,我希望能够进一步扩展,因为我希望能够从两个以上的列表中生成许多排列的测试样本。

即使使用流,是否也会不可避免地成为一团糟呢?还是我不够用自己?

在意识到我正在寻找笛卡尔积之后,发现了一些其他答案:

如何使用Java 8流制作笛卡尔产品?


问题答案:

我有困难,搞清楚你希望是什么,它 看起来 就像你正在试图获得笛卡尔积?就像,给定{1, 2}{3, 4},您期望{(1, 3), (1,4), (2, 3), (2,4)}什么?(就其价值而言,我认为这与排列的数学定义没有任何关系,排列的数学定义通常涉及对单个列表的内容进行排序的不同方式。)

那可以写

xs.stream()
  .flatMap(x -> ys.stream().map(y -> Pair.of(x, y)))
  .collect(toList());


 类似资料:
  • 我可以在Scala中通过以下内容轻松实现这一点: 所以如果我给它{1,2},{3,4},我返回{1,3},{1,4},{2,3},{2,4} 我希望能够使用Streams将其转换为Java8。 我有一点困难,我希望能够扩展到更远的地方,因为我希望能够从两个以上的列表中生成许多排列的测试样本。 如何用Java8流制作笛卡尔积?

  • 问题内容: 定义:两个集合的笛卡尔积是这些集合的所有可能对的集合,因此{A,B} x {a,b} = {(A,a),(A,b),(B,a ),(B,b)}。 现在,我想将这样的笛卡尔积插入数据库表(每对成一行)。打算在表中使用每对的默认值,因此此时数据库中不存在数据(即两组)。 任何想法如何使用postgresql实现这一目标? 编辑 : 借助Grzegorz Szpetkowski的答案,我能够

  • 问题内容: 以下代码适用于,它是否也返回重复的笛卡尔积,如果是,如何获得唯一的笛卡尔积? 当我传递包含列表的列表时,这似乎也不起作用 问题答案: 要仅获取唯一元素,可以使用这样的set表示法( 注意: 这不能保证顺序) 或根据Paul Draper的评论,我们可以像这样 如果您也想维护订单 要使您的程序可以使用列表列表,只需将函数声明从 至

  • 问题内容: 我正在尝试编写一些代码来测试一堆输入参数的笛卡尔积。 我看过了,但是它的功能并不是我想要的。有没有一种简单明了的方法来获取一个字典,每个字典中包含任意数量的键 和 每个值中任意数量的元素,然后生成具有下一个排列的字典? 输入: 输出示例: 问题答案: 好的,感谢@dfan告诉我我在错误的位置查看。我现在知道了: 编辑 :经过多年的Python经验,我认为一个更好的解决方案是接受输入,而

  • 问题内容: 我试图解决中提到的问题这篇文章。考虑一个非负整数列表。我想要一套的笛卡尔积。例如,如果我可以使用itertools: 如果您能帮助我知道如何生成任意长度的using ,我将不胜感激。 问题答案: 您可以使用映射的所有项目来,然后解开他们:

  • 现在我只能实现两个集合的笛卡尔积,下面是代码: 这段代码在IntelliJ中运行良好,但在Eclipse(两者的编译器遵从级别均为1.8)中就不行了: 下面是pair.java: 如何修复这个错误? 有没有一个优雅的方法来实现几个收藏的笛卡尔产品?(假设我们有类)