最后,要比较两个字符串“序列”(表示字符序列),没有任何提高效率的技巧。
你必须somehow遍历两个序列并逐个元素进行比较。
从这个意义上说,你唯一可以努力的就是:“高效”的编码风格;换句话说:专注于编写人类可读的代码。
当然,现有的库调用 Arrays.equals() 将是您的第一站。除此之外:你可以非常确定,无论你自己写下什么,都会not比标准内置解决方案执行“更好”。
除此之外:请记住,决定之间存在差异:两个大小相同的数组是否具有相同的元素?或者他们有完全一样元素的顺序?
换句话说;you必须澄清 [A, B] 是否等于 [B, A] - 以确定是否数组.equals() with
如果两个指定的对象数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中所有对应的元素对都相等,则认为这两个数组相等。如果 (e1==null ? e2==null : e1.equals(e2)),则两个对象 e1 和 e2 被视为相等。换句话说,如果两个数组包含相同顺序的相同元素,则它们相等。此外,如果两个数组引用都为空,则认为两个数组引用相等。
确实是您所需要的!
如果订单是not对你很重要,你首先必须sort两个数组 - 因为这会将两个数组内容放入相同的顺序。
最后的想法:从性能角度来看,这里使用数组和 ArrayList 之间应该没有(太大)差异。在我的回答中,我们只是发现您可以通过放下来更轻松地与列表进行比较listA.equals(listB)
(这将为您提供 Arrays.equals() 语义)。
唯一可能真正影响性能的方面是:当您的用例允许使用集合时......