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

Java 检查一个基元数组是否包含另一个数组中的所有基元的最佳方法,java,arrays,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 其中containsAll是一个检查第一个参数中是否有第二个参数的函数!!!

我正在寻找最好的方法来检查一个原语数组是否包含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是一个检查第一个参数中是否有第二个参数的函数!!!我不想为了使用以下方法而将int数组转换为Integer数组:

Arrays.asList(a).containsAll(Arrays.asList(b))
因为我认为如果阵列很大,那将是对性能的极大浪费!!!但也许我错了,最好的解决办法就是。。。你有什么想法吗?

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

你自己在
int[]
数组上做两个嵌套循环肯定会成功


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

如果保证它们总是被排序,则可以使用二叉树搜索。解构问题:找出一个基元数组是否包含给定值的最佳方法是什么?然后,对数组中要检查的每个值重复该操作,直到用完(result=true)或找不到一个(result=false)。您可以编写自己的double for循环,并根据显示的实现对其进行测试,但您应该自己做。我认为将int转换为整数并不坏。使用一百万int编写一个单元测试,并检查性能。
Arrays.asList(a).containsAll(Arrays.asList(b))
在应用于基元数组时没有达到预期效果。