java实现两个数组合并为一个(常用)
(1)Arrays.copyOf()
1、使用Arrays.copyOf ()方法创建一个新的数组,并将数组 nums1 中的元素复制到数组 mergedArray 中
2、使用System.arraycopy ()方法将数组 nums2 中的元素复制到数组 mergedArray 的后半部分。
int[] mergedArray = Arrays.copyOf(nums1,nums1.length+nums2.length);
System.arraycopy(nums2,0,mergedArray,nums1.length,nums2.length);
(2)IntStream.concat()
1、使用Arrays.stream() 方法将数组 nums1 和数组 nums2 转换为 IntStream对象
2、使用Stream.concat() 方法将这两个 IntStream对象连接成一个单独的流
3、使用 toArray() 方法将连接后的流转换为一个数组 mergedArray
int[] mergedArray = IntStream.concat(Arrays.stream(nums1), Arrays.stream(nums2)).toArray();
(3)System.arraycopy()
大体同方法1,
int[] nums1 = {1,3};
int[] nums2 = {2};
int[] mergedArray = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, mergedArray, 0, nums1.length);//nums1: [1,3]
System.arraycopy(nums2, 0, mergedArray, nums1.length, nums2.length);//nums2: [2]
//mergedArray :[1,3,2]
以java两个数组合并为一个并实现求中位数为例。
public static class MainClass {
public static void main(String[] args) {
// 创建MainClass对象
MainClass mainClass = new MainClass();
// 调用public方法
int[] nums1 = {1,3};
int[] nums2 = {2};
mainClass.findMedianSortedArrays(nums1,nums2);
System.out.println("-----------"+mainClass.findMedianSortedArrays(nums1,nums2));
}
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
//IntStream.concat
int[] c = IntStream.concat(Arrays.stream(nums1), Arrays.stream(nums2)).toArray();
//System.arraycopy
int[] mergedArray = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, mergedArray, 0, nums1.length);
System.arraycopy(nums2, 0, mergedArray, nums1.length, nums2.length);
//Arrays.copyOf
int[] d = Arrays.copyOf(nums1,nums1.length+nums2.length);
System.arraycopy(nums2,0,d,nums1.length,nums2.length);
//排序
Arrays.sort(mergedArray);
if (mergedArray.length %2!=0){
Double value = (double) mergedArray[mergedArray.length / 2];
return value;
}else{
double v = (mergedArray[(mergedArray.length - 1) / 2] + mergedArray[mergedArray.length / 2]) / 2.0;
return v;
}
}
}