常用java实现两个数组合并为一个数组的方法

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;
            }

        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值