Par*_*ker 2 java arrays string arraylist string-comparison
是否有任何有效的方法可用于比较两个字符串数组而无需检查每个元素?
我尝试使用数组列表,构建对象,但没有一个没有显示出太大的影响.
最后,为了比较字符串的两个"序列"(代表字符序列),效率没有神奇的技巧.
你必须以某种方式遍历两个序列并逐个元素地比较它们.
从这个意义上说,你唯一能想到的就是:"高效"的编码风格; 换句话说:专注于编写人类可读代码.
当然,现有的库调用Arrays.equals()将是您的第一站.除此之外:您可以非常确定无论您自己写下什么都不会比标准的内置解决方案"更好".
除此之外:请记住,决定之间存在差异:两个大小相同的数组是否具有相同的元素; 或者它们是否具有完全相同的元素顺序?
换一种说法; 你必须澄清[A,B]是否等于[B,A] - 来判断 Array.equals()是否与
如果两个指定的Objects数组彼此相等,则返回true.如果两个数组包含相同数量的元素,则两个数组被认为是相等的,并且两个数组中的所有相应元素对是相等的.如果(e1 == null?e2 == null:e1.equals(e2)),则认为两个对象e1和e2相等.换句话说,如果两个数组包含相同顺序的相同元素,则它们是相等的.此外,如果两个数组引用都为null,则认为它们相等.
真的是你需要的!
如果订单是不是对你很重要,你必须先进行排序两个阵列-为使两个数组内容到同一顺序.
最后的想法:性能明智,在这里使用数组和ArrayList之间不应该有太大的区别.在我的回答中,我们只是发现你可以通过放下来更容易地与列表进行比较listA.equals(listB)(这将为你提供Arrays.equals()语义).
可能真正影响性能的唯一方面是:当您的用例允许使用集合时......
如果您正在寻找比较两个数组的完全匹配,您可以使用Arrays equals()JDK中的方法,如Arrays.equals(array1,array2),如下所示:
代码示例:
String[] a1 = {"A", "B"};
String[] a2 = {"A", "B"};
System.out.println(Arrays.equals(a1, a2));
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
true
Run Code Online (Sandbox Code Playgroud)
但是,正如@GhostCat建议的那样,这里没有任何魔法发生,即字符串的迭代和比较发生在Arrays.equals()方法内部,然后返回true或false.
另外,请注意,在上面的例子中,对于类似的情况a2={"B","A"},equals()返回false.
| 归档时间: |
|
| 查看次数: |
4856 次 |
| 最近记录: |