Pop*_*oko 22 java arrays string
我有两个String数组,让我们说:
String[] s1 = {"a","b","c"}
String[] s2 = {"c","a","b"}
Run Code Online (Sandbox Code Playgroud)
//这些数组应该相等
我想以"最干净"的方式检查他们的平等.
我尝试过使用,Arrays.equals(s1,s2)但我得到了一个错误的答案.我想这个方法关心元素的顺序,我不希望这一点很重要.
你能告诉我怎样才能以一种好的方式做到这一点?
Mov*_*ast 31
如果您不想修改原始数组
Arrays.equals( Arrays.sort( Arrays.copyof(s1,s1.length)),
Arrays.sort( Arrays.copyof(s2,s2.length)) );
Run Code Online (Sandbox Code Playgroud)
Arrays.sort()使用优化的快速排序,nlog(n)表示平均值,但在最坏的情况下为O(n2).来自java文档.因此最坏的情况是O(n2),但实际上大多数情况下都是O(nlogn).
排序算法是一个经过调整的快速排序,改编自Jon L. Bentley和M. Douglas McIlroy的"工程排序功能",软件实践和经验,卷.23(11)P.1249-1265(1993年11月).该算法在许多数据集上提供n*log(n)性能,导致其他快速降序降级为二次性能.
Luk*_*der 10
其他人建议对数组进行排序.但是,既然你正在寻找"最干净"的解决方案,我认为不应该触及原始阵列.因此:
List<String> l1 = new ArrayList<String>(Arrays.asList(s1));
List<String> l2 = new ArrayList<String>(Arrays.asList(s2));
Collections.sort(l1);
Collections.sort(l2);
boolean outcome = l1.equals(l2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14520 次 |
| 最近记录: |