当前位置: 首页 > 知识库问答 >
问题:

如何使用==和AssertJ比较两个集合?

夹谷阳夏
2023-03-14

我只是实现了自己的插入排序,并试图验证功能,包括稳定性。

对于给定的未排序元素列表,我试图根据collections#sort(list)方法验证我的代码。

List<E> unsorted = ...; // <E extends Comparable<? super E>>

List<E> sorted1 = new ArrayList<>(unsorted);
Collections.sort(sorted1);

List<E> sorted2 = new ArrayList<>(unsorted);
MyInsertionSort.sort(sorted2);

我找到了AbstractiterAbleAssert#ContainsExactlYelementsOf方法。

        assertThat(sorted2)
                .isSorted()
                .isSortedAccordingTo(Comparator.naturalOrder())
                .containsExactlyElementsOf(sorted1)
        ;

最后,我将方法跟踪到调用comparator#compare的位置。

containsexactlyelementsof方法是否覆盖稳定性?

或者,对于的稳定性是否应该添加其他方法?

共有1个答案

安泰平
2023-03-14

可以从AssertJ中使用hasSameElementsAs()方法。此方法忽略重复项并验证两者具有相同的元素assertThat(firstCollection).HassameElementSAS(secondCollection);当我们使用这种方法时,建议先验证大小。

如果您担心顺序,那么我们可以使用containsExactlyInAnyOrde()

 类似资料:
  • 问题内容: 当给出两套时 s1 = {a,b,c,d} s2 = {b,c,d,a} (IE) 如何编写Sql查询以显示“ tableA和tableB中的元素相等”。[不使用SP或UDF] 输出 问题答案: 使用: 测试:

  • 问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。

  • 您能帮助我在使用方法时哪里出错了吗?

  • 问题内容: 我正在寻找一种比较两个图像以查看它们有多相似的方法。谷歌搜索它会产生大量的图像处理结果(裁剪,调整大小等),但是没有什么可以做图像的近似比较。有一个Node.js库,但是它的版本为0.0.1,并且依赖于各种第三方系统软件包,因此不稳定或可移植。 遵循以下原则: 问题答案: 有node-opencv模块,您可以使用它来执行繁重的操作,例如图像比较。 屏幕截图或图标可以变形(缩放,旋转,倾

  • 问题内容: 我有以下两个收藏夹,其中包含学生证。 id是格式为111-1111的字符串。例如ID 221-2534、215-6365等。 这些ID与其他数据一起位于固定格式的文件中。也就是说,前8个字符ID,后10个字符名称,后10个字符地址,依此类推。 我将id读入集合,如下所示: 此处,文件中的条目按SSN排序。因此,我相信所形成的集合也将得到排序。 现在: 案例: 我想通过比较两个集合来了解

  • 问题内容: 我必须比较两个对象(不是)。比较它们的规范方法是什么? 我可以想到: 该运营商只比较基准,因此这将仅适用于较低的整数值的工作。但是也许自动装箱开始了…? 这看起来像一个昂贵的操作。是否以此方式计算出哈希码? 有点冗长… 编辑: 谢谢您的答复。尽管我现在知道该怎么办,但事实已分布在所有现有答案(甚至是已删除的答案)上,我也不知道该接受哪个答案。因此,我将接受最佳答案,即所有三种比较可能性