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

时间:2017-10-03 15:06:05

标签: java arrays

我正在寻找检查基元数组是否包含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

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

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

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

1 个答案:

答案 0 :(得分:1)

Java集合框架中的containsAll()方法有效地执行了两个嵌套循环,因此您将使用ArrayList<Integer>浪费性能转换为Integer[]Arrays.asList()并且使用containsAll()

在你的int[]数组上做两个嵌套循环肯定会超过它。

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