比较数组并获得差异

5 java arrays compare

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

例如:

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

Animal animals[] = { cat, dog };
Animal animals2[] = { cat, dog, alligator };
Run Code Online (Sandbox Code Playgroud)

我如何将它们与两个数组进行比较并使其返回实例Alligator

Ste*_*n C 5

我建议你的问题需要澄清.目前,每个人都在猜测你究竟在问什么.

  • 数组是用于表示集合,列表还是其中的某些内容?换句话说,元素顺序是否重要,是否可以重复?
  • "平等"是什么意思?是否new Cat()"平等" new Cat()?你的例子暗示它确实!!
  • "差异"是什么意思?你的意思是设定差异?
  • 如果两个数组具有相同的长度,您希望发生什么?
  • 这是一次性比较还是对同一个数组重复出现?
  • 数组中有多少个元素(平均)?
  • 你为什么要使用数组呢?

假设这些数组是真正的集合,那么您可能应该使用HashSet而不是使用数组,并使用像addAll和这样的集合操作retainAll来计算集合差异.

另一方面,如果数组用于表示列表,则根本不清楚"差异"的含义.

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

最后,如果您要使用任何依赖于该equals(Object)方法的东西(包括任何Java集合类型,您真的需要清楚地了解应用程序中"equals"的含义.所有Cat实例都是相同的?它们都是不同的吗?有些Cat情况是否相同而其他情况不同?如果你没有想到这一点,并相应地实施equalshashCode方法,你会得到令人困惑的结果.