我正在寻找检查基元数组是否包含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))
因为我认为如果阵列很大,那将是对性能的极大浪费!但也许我错了,最好的解决方案就是那个......你有什么想法吗?
答案 0 :(得分:1)
Java集合框架中的containsAll()
方法有效地执行了两个嵌套循环,因此您将使用ArrayList<Integer>
浪费性能转换为Integer[]
或Arrays.asList()
并且使用containsAll()
。
在你的int[]
数组上做两个嵌套循环肯定会超过它。
如果您有其他信息(例如排序数组,重复使用相同数组,数组的典型大小),则可能会采用性能更高的算法。