给定2个int型数组,比较两个数组中相同的元素,并将其作为结果返回。java
时间: 2024-04-30 14:17:20 浏览: 16
实现如下:
```
public static int[] compareArrays(int[] arr1, int[] arr2) {
HashSet<Integer> set = new HashSet<Integer>();
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < arr1.length; i++) {
set.add(arr1[i]);
}
for (int i = 0; i < arr2.length; i++) {
if (set.contains(arr2[i])) {
list.add(arr2[i]);
}
}
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
```
简单解释一下上面的代码:
1. 创建一个 HashSet,将第一个数组中的所有元素添加进去。
2. 遍历第二个数组,如果 HashSet 中包含当前元素,就将其添加到 ArrayList 中。
3. 最后将 ArrayList 转换为数组并返回结果。
希望能对你有所帮助!
相关问题
给定2个int型数组,比较两个数组中相同的元素,并将其作为结果返回。用java编写
可以使用两个嵌套循环来比较两个数组中的元素,代码如下:
```java
public static int[] compareArrays(int[] arr1, int[] arr2) {
List<Integer> commonElements = new ArrayList<Integer>();
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if (arr1[i] == arr2[j]) {
commonElements.add(arr1[i]);
break;
}
}
}
int[] result = new int[commonElements.size()];
for (int i = 0; i < commonElements.size(); i++) {
result[i] = commonElements.get(i);
}
return result;
}
```
该方法将返回一个int型数组,其中包含两个输入数组中相同的元素。注意,该方法只返回相同的元素,而不会返回在一个数组中出现但在另一个数组中没有出现的元素。
java合并给定的两个数组并以升序返回
以下是Java代码来合并两个数组并以升序返回:
```java
public static int[] mergeArrays(int[] arr1, int[] arr2) {
int[] mergedArr = new int[arr1.length + arr2.length];
int i = 0, j = 0, k = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
mergedArr[k++] = arr1[i++];
} else {
mergedArr[k++] = arr2[j++];
}
}
while (i < arr1.length) {
mergedArr[k++] = arr1[i++];
}
while (j < arr2.length) {
mergedArr[k++] = arr2[j++];
}
return mergedArr;
}
public static void main(String[] args) {
int[] arr1 = {1, 3, 5, 7};
int[] arr2 = {2, 4, 6, 8};
int[] sortedArr = mergeArrays(arr1, arr2);
System.out.println(Arrays.toString(sortedArr));
}
```
上述代码使用三个指针 `i`、`j` 和 `k` 来遍历两个数组和合并后的数组。使用 while 循环来比较两个数组中的元素,将较小的元素添加到合并后的数组中,并将相应的指针向前移动。最后,将剩余的元素添加到合并后的数组中并返回。