我如何比较两个可能具有不同长度的数组并获得每个数组之间的差异?
例如:
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?
我建议你的问题需要澄清.目前,每个人都在猜测你究竟在问什么.
new Cat()"平等" new Cat()?你的例子暗示它确实!!假设这些数组是真正的集合,那么您可能应该使用HashSet而不是使用数组,并使用像addAll和这样的集合操作retainAll来计算集合差异.
另一方面,如果数组用于表示列表,则根本不清楚"差异"的含义.
如果代码快速运行至关重要,那么您肯定需要重新考虑数据结构.如果你总是从数组开始,你将无法快速计算"差异"...至少在一般情况下.
最后,如果您要使用任何依赖于该equals(Object)方法的东西(包括任何Java集合类型,您真的需要清楚地了解应用程序中"equals"的含义.所有Cat实例都是相同的?它们都是不同的吗?有些Cat情况是否相同而其他情况不同?如果你没有想到这一点,并相应地实施equals和hashCode方法,你会得到令人困惑的结果.