java - 创建一个出现在两个给定数组java中的值数组
问题描述
我需要创建一个数组,其值出现在两个给定数组中。
我正在考虑遍历每个数组并比较值,如果它们匹配,则增加一个“计数器”变量,该变量将是新数组的长度,循环遍历新数组并将值分配给数组元素。
我需要找出一个带有循环的解决方案,下面的代码是我到目前为止所得到的
class New {
public static void main(String[] args) {
int arr1[] = {2, 4, 5, 7, 9, 10};
int arr2[] = {1, 2, 5, 6, 8};
int counter = 0;
int combined[] = new int[counter];
for (int s = 0; s < arr1.length; s++) {
for (int x = 0; x < arr2.length; x++) {
for (int i = 0; i < combined.length; i++) {
if (arr1[s] == arr2[x]) {
counter++;
combined[i] = arr1[s];
}
}
}
for (int i = 0; i < combined.length; i++) {
System.out.print(combined[i] + " ");
}
}
}
}
解决方案
public static int[] intersection(int[] arr1, int[] arr2) {
Set<Integer> elements = IntStream.of(arr1).boxed().collect(Collectors.toSet());
return IntStream.of(arr2).filter(elements::contains).toArray();
}
或仅使用int[]
:
// create temporary array to not modify input data
int[] tmp = Arrays.copyOf(arr1, arr1.length);
Arrays.sort(tmp);
for(int v : arr2)
if(Arrays.binarySearch(tmp, v) >= 0)
System.out.print(v + " ");
推荐阅读
- ios - pod 安装后 Podfile.lock 散列缓存键更改,即使 pod 都是最新的 azure devops 管道
- c++ - 如何使用 CThreadPool 在后台线程上调用类方法
- docker - sudo unknown group - 需要帮助使用外部高清设置 NextCloud
- single-page-application - 如何制作单页应用程序?
- algorithm - LeetCode 1707. 数组中元素的最大异或
- delphi - 从 TJvHidDeviceController.OnRemoval 引发的异常 - 如何在应用程序级别处理它?
- nginx - Nginx-1.19.6 + Openssl 1.1.1i - 无法进行 SSL 握手
- javascript - 在 createjs 中所有先前加载的实例上覆盖的图像
- javascript - 写入 JSON 文件
- python - Python solve_ivp [scipy.integrate]:如何设置你的集成过程的输出点数?