gpt4 book ai didi

java - 比较数组并获得差异

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:04 25 4
gpt4 key购买 nike

我如何比较两个可能具有不同长度的数组并获得每个数组之间的差异?

例如:

Cat cat = new Cat();
Dog dog = new Dog();
Alligator alligator = new Alligator();

Animal animals[] = { cat, dog };
Animal animals2[] = { cat, dog, alligator };

我如何比较这两个数组并使其返回 Alligator 的实例?

最佳答案

我建议您需要澄清您的问题。目前,每个人都在猜测你实际问的是什么。

  • 数组是用来表示集合、列表还是介于两者之间的?换句话说,元素顺序是否重要,是否可以重复?
  • “等于”是什么意思? new Cat()“等于”new Cat() 吗?你的例子表明它确实如此!!
  • “差异”是什么意思?你的意思是设置差异?
  • 如果两个数组的长度相同,你希望发生什么?
  • 这是一次性比较还是对相同的数组重复进行?
  • 数组中有多少个元素(平均)?
  • 你为什么要使用数组?

假设这些数组是真集,那么您可能应该使用 HashSet 而不是数组,并使用 addAllretainAll 计算集合差。

另一方面,如果数组意在表示列表,则根本不清楚“差异”的含义。

如果代码快速运行至关重要,那么您肯定需要重新考虑您的数据结构。如果您总是从数组开始,您将无法快速计算出“差异”……至少在一般情况下是这样。

最后,如果您要使用任何依赖于 equals(Object) 方法的东西(并且包括任何 Java 集合类型,您确实需要清楚地了解什么是“equals” 应该在您的应用程序中表示。所有 Cat 实例都相等吗?它们都不同吗?一些 Cat 实例是否相等而其他实例不相等?如果您不认为这样做,并相应地实现 equalshashCode 方法,您将得到令人困惑的结果。

关于java - 比较数组并获得差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com