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

比较对象数组的集合[重复]

海翔宇
2023-03-14
        Set<Object[]> set1 = new HashSet<>();
        Set<Object[]> set2 = new HashSet<>();

        Object[] a1 = new Object[]{"aa", 1};
        Object[] a2 = new Object[]{"bb", 2};

        Object[] b1 = new Object[]{"aa", 1};
        Object[] b2 = new Object[]{"bb", 2};

        set1.add(a1);
        set1.add(a2);

        set2.add(b1);
        set2.add(b2);

如果两个集合包含相同的对象,如何进行比较?

set1.equals(set2)

当然会打印出假的。

共有1个答案

萧嘉茂
2023-03-14

您要么必须重写equals()方法,要么手动比较集合中的每个元素。

我曾经看到过的另一个实现是使用RemveAll()。

boolean isEquals = (new HashSet<>(set1)).removeAll(set2);

不过,它没有考虑元素的顺序。

 类似资料:
  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。

  • 我有以下代码: 结果如下: 但是将的类型更改为将产生不同的输出,例如: 新的输出: 怎么会这样?为什么第一个示例代码没有输出?

  • 问题内容: 我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗? 问题答案: 编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算

  • 我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用

  • 假设我有一个叫“序列”的类。这个类有一个实例变量。还有一些方法可以创建这个选项卡,比如: 现在,我想创建一个方法,它接受两个Sequence对象作为参数,并返回相同tab元素的数量。所以,我创建了这样的方法:

  • 我有一个如下所示的Powershell数组: 我需要找到TSMserver和集群的所有VM都具有相同的值。 我需要一个命令来检索(例如)这两个VM,因为它们共享相同的第一个值。 所以实际上我需要将数组中的每个对象与其他对象进行比较,以找到前两个属性的公共值。 提前非常感谢!