【发布时间】:2017-04-14 06:47:18
【问题描述】:
我正在尝试查看我的数组中的元素是否包含在我的其他数组之一中。我不想为此使用嵌套的 for 循环,我很好奇为什么我的 .contains 不起作用。
目前我有两个数组
double [] s2 = new double [4];
double [] match = new double [s2.length];
我正在尝试测试s2 是否包含我的match 数组中的任何值
for (j = 0; j < s2.length; j++)
{
if(Arrays.asList(s2).contains(match[j])){
return true;
}
}
这与我使用的双精度数据类型有关吗?如果是这样,有没有办法我仍然可以使用.contains?
【问题讨论】:
-
您不想使用嵌套循环的任何具体原因?
-
您正在使用嵌套循环,您只是通过
contains间接使用(并且您在每次传递时为s2创建一个新的列表包装器) . -
有趣的是我现在不知道@chrylis,所以这会给我一个运行时间 O(n^2) 吗?因为它现在将是一个运行 n 次的嵌套循环。
-
您想检查
s2中的any 元素是否在match中?还有其他一些具有更好大 O 的替代方案,例如先排序一个,但通常会降低常数,而只支持循环两次。