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

有没有一种方法可以检查两个Collections是否包含相同的元素,而与顺序无关?

左丘嘉言
2023-03-14
问题内容

我一直在寻找一种操作类似于的方法Arrays.equals(a1, a2),但忽略了元素顺序。我在Google
Collections(类似Iterables.elementsEqual(),但确实能说明订购)和JUnit(assertEquals()显然只是调用equals()Collection,这取决于Collection的实现,而这并不是我想要的)中都找不到。如果此方法采用Iterables
是最好的,但是我也可以简单地采用Collections。这样的方法当然会考虑集合中的所有重复元素(因此不能简单地测试containsAll())。

请注意,我并不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它。


问题答案:

Apache commons-
collections具有CollectionUtils#isEqualCollection:

如果给定的Collection包含具有完全相同基数的完全相同的元素,则返回true。

也就是说,如果a中e的基数等于b中e的基数,则对于a或b中的每个元素e。

我想,这正是您所追求的。



 类似资料:
  • 如何检查两个数组(循环)是否具有相同顺序的相同元素。例如,让我们以数组[1,2,3,4]为例。 对于[2,3,4,1]、[3,4,1,2]、[4,1,2,3],测试应返回true,但对于[1,3,2,4]、[1,4,2,3]或[1,2,3,5]则不返回true。 我最初的方法是找到第一个匹配项——每个数组中一个相等的元素——并将这两个元素视为各自数组的初始元素,我逐个比较了数组的其余元素。 有没有

  • 我想删除一些与其他输出值相同的输出!因为Test1=Test2=Test5=Test6,所以我希望它在控制台上只显示Test1!Test3=Test4=Test7=Test8,所以我希望它只显示Test3。。。。。。。。 以下代码是我所做的: 以下是我的输出:

  • "给定两个字符串s和t,编写一个函数来检查s是否包含t的所有字符(顺序与字符串t相同)。返回true或false。递归不一定。这是我用java写的代码片段。问题是输入: string1="st3h5irteuyarh!"和string2="shrey"它应该返回TRUE,但它返回FALSE。那是为什么?"

  • 问题内容: 假设我们有这个流 我想在地图中保存几对相邻的字符串,其中第一个以“ err”开头。 我想到的就是这样 但是我对它并不完全满意,主要有两个原因 我在“滥用” 功能。在Stream API中,每个函数都有其明确的定义明确的目的:应该计算最大值,应该根据条件进行过滤,应该产生递增的累加值,依此类推。 这样做会使我无法使用Streams强大的机制:如果我想将搜索范围限制在前两个结果中,该怎么办

  • 问题内容: 很抱歉这个简单的问题,但是我很难找到答案。 当我比较2个列表时,我想知道它们是否“相等”,因为它们具有相同的内容,但是顺序不同。 例如: 我想评估。 问题答案: 您可以简单地检查带有x和y元素的多重集是否相等: 这要求元素是可哈希的。运行时将位于中,其中列表大小。 如果元素也是唯一的,则还可以转换为集合(相同的渐近运行时,在实践中可能会快一点): 如果元素不是可哈希的,而是可排序的,则

  • 的顺序将与为创建对象选择的顺序相同 允许重复的后续字符串组件并按顺序保留 未定义的行为(其他代码保证没有进入工厂) 在对象实例化之后,没有任何方法可以更改组件列表 我正在编写一个简单的测试,该测试从字符串列表创建并检查它是否可以通过返回相同的列表。我立即这样做,但这应该发生在一个现实的代码路径的远处。 这里是我的尝试: null null