java – 检查基元数组是否包含另一个数组中所有基元的最佳方法

我正在寻找最好的方法来检查一个基元数组是否包含
Java中另一个数组中的所有基元.例如:

int[] a = new int[]{1,2};
int[] b = new int[]{1,2,3,4,5};
int[] c = new int[]{2,4,6};

containsAll(b, a); //true
containsAll(a, b); //false
containsAll(c, b); //false

其中containsAll是一个函数,检查第一个参数内是否有第二个参数!!!我不想在Integer数组中转换我的int数组,以便使用以下方法:

Arrays.asList(a).containsAll(Arrays.asList(b))

因为我认为如果阵列很大,那将是对性能的极大浪费!但也许我错了,最好的解决方案就是那个……你有什么想法吗?

最佳答案 Java集合框架中的containsAll()方法有效地完成了两个嵌套循环,因此您将浪费性能转换为ArrayList< Integer>或者使用Arrays.asList()和使用containsAll()的Integer [].

在你的int []数组上做两个嵌套循环肯定会打败它.

如果您有其他信息(例如排序的数组,重复使用相同的数组,典型的数组大小),则可能有更高性能的算法.

点赞