Java中合并两个数组的4种方法(How to Merge Two Arrays in Java)

这篇具有很好参考价值的文章主要介绍了Java中合并两个数组的4种方法(How to Merge Two Arrays in Java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

int[] arr1={1, 2, 3, 4, 5, 6}; //first array
int[] arr2={7, 8, 9, 0}; //second array
int[] arr3={1, 2, 3, 4, 5, 6, 7, 8, 9, 0} //resultant array

There are following ways to merge two arrays:
1.Java arraycopy() method
2.Without using arraycopy() method
3.Java Collections
4.Java Stream API

1.Java arraycopy() method

Java arraycopy() is the method of System class which belongs to java.lang package.
It copies an array from the specified source array to the specified position of the destination array.
The number of elements copied is equal to the length argument.
Syntax:
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parameters

  • source: It is a source array.
  • source_position: Starting point in the source array.
  • destination: It is a destination array.
  • destination_position: Starting position in the destination array.
  • length: The number of array elements to be copied

NullPointerException
It throws NullPointerException if the source or destination array is null. It also throws ArrayIndexOutOfBoundsException if:

  • source_position or destination_position or length is negative.
  • source_position+length is greater than the length of the source array, or destination_position+length is - greater than the length of the destination array.
public class A{
    public static void main(String[] args) {
        int[] firstArray = {23,45,12,78,4,90,1};        //source array
        int[] secondArray = {77,11,45,88,32,56,3};  //destination array
        int fal = firstArray.length;        //determines length of firstArray
        int sal = secondArray.length;   //determines length of secondArray
        int[] result = new int[fal + sal];  //resultant array of size first array and second array
        System.arraycopy(firstArray, 0, result, 0, fal);
        System.arraycopy(secondArray, 0, result, fal, sal);
        System.out.println(Arrays.toString(result));    //prints the resultant array
    }
}

[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]

according to the specified positions and length.

public class A{
    public static void main(String[] args) {
        int source_arr [] = { 11,22,33,44,55,98,76,54,60};
        int dest_arr[] = {66,77,88,99,22,67,21,90,80,70};
        int sourcePos = 2;
        int destPos = 4;
        int len = 3;
//invoking arraycopy() method
        System.arraycopy(source_arr, sourcePos, dest_arr,destPos, len);
// Print elements of destination after
        System.out.print("Resultant array : ");
        for (int i = 0; i < dest_arr.length; i++)
            System.out.print(dest_arr[i] + " ");
    }
}

Resultant array : 66 77 88 99 33 44 55 90 80 70 

2.Without using arraycopy() method

Manually copy the each element of both arrays to mergedArray and convert that array into String by using toString() method of Array class.

public class A{
    public static void main(String[] args) {
        int[] firstArray = {56,78,90,32,67,12}; //initialized array
        int[] secondArray = {11,14,9,5,2,23,15};
        int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray
        int[] mergedArray = new int[length];    //resultant array
        int pos = 0;
        for (int element : firstArray) //copying elements of secondArray using for-each loop
        {
            mergedArray[pos] = element;
            pos++;              //increases position by 1
        }
        for (int element : secondArray) //copying elements of firstArray using for-each loop
        {
            mergedArray[pos] = element;
            pos++;
        }
        System.out.println(Arrays.toString(mergedArray));   //prints the resultant array  
    }
}

[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]

3.Java Collections

Using the Arrays.asList() method.
Now we have created the list view of str2 and added all the elements of str2 into the list.
Again perform conversion from list to array and store the resultant array into str3 variable.

public class A{
    public static void main(String[] args) {
        String str1[] = { "A", "E", "I" };          //source array
        String str2[] = { "O", "U" };               //destination array
        List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array
//returns a list view of str2 and adds all elements of str2 into list
        list.addAll(Arrays.asList(str2));
        Object[] str3 = list.toArray();         //converting list to array
        System.out.println(Arrays.toString(str3));  //prints the resultant array
    }
}

[A, E, I, O, U]

4.Java Stream API

Stream.of() method
The Stream.of() method of Stream interface returns a sequential ordered stream whose elements are the values.

Syntax
static Stream of(T…values)
Explain:Where MT is the type of stream elements. The method accepts values (elements of the new stream).

flatMap() method
The flatMap() method is the method of Stream interface. It returns a stream consisting of the result.
Syntax
Stream flatMap(Function<? Super T, ? extends Stream<? Extends R>> mapper)
Explain:Where R is the element type of new stream. The method accepts a mapper (a function to apply to each element which produces a stream of new values) as a parameter.

toArray() method
The toArray() method of Stream interface returns an array containing the elements of the stream.
Syntax
Object[] toArray()文章来源地址https://www.toymoban.com/news/detail-513345.html

public class A{
    // function to merge two arrays
    public static <T> Object[] mergeArray(T[] arr1, T[] arr2)
    {
        return Stream.of(arr1, arr2).flatMap(Stream::of).toArray();
    }
    public static void main (String[] args)
    {
        Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array
        Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array
        Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array
        System.out.println("Merged array: "+ Arrays.toString(mergedArray));
    }
}

Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]

到了这里,关于Java中合并两个数组的4种方法(How to Merge Two Arrays in Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础教程】(三十八)常用类库篇 · 第八讲:数组操作类——解析Arrays类中的全部操作方法,解锁Java数组操作技巧~

    前言:在学习本文之前,应该先学习并清楚了解Java基础部分的数组相关的概念和知识。 若还不具备学习条件,请先前往学习数组部分的基础知识: 《【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转

    2024年02月15日
    浏览(62)
  • git diff两个分支有差异git merge却显示没有可以合并的内容

    problem: 用git diff可以发现两个分支还是有很多不一样的地方,可用git merge显示not something we can merge 输入gitk查看,发现preview已经在这个分支前面了。。。虽然不太懂,但这样是没办法将preview合并当前分支的,只能这个分支合并preview。。。 解决:因为也不会别的解决方法,因

    2024年02月12日
    浏览(51)
  • 【算法】Maximum Sum of Two Non-Overlapping Subarrays 两个非重叠子数组的最大和

    问题 有一个整数数组nums,和2个整数firstlen,secondlen,要求找出2个非重叠子数组中的元素的最大和,长度分别是firstlen,secondlen。 不限制2个子数组的先后顺序。 firstlen,secondlen的范围 [ 1 , 1000 ] [1,1000] [ 1 , 1000 ] firstlen+secondlen的范围 [ 2 , 1000 ] [2,1000] [ 2 , 1000 ] f i r s t l e n ,

    2023年04月27日
    浏览(121)
  • java合并数组的方法

      在 Java中,数组是一种重要的数据结构,在 Java中数组的操作方式有两种,一种是直接使用数组来操作,另一种是通过引用计数或者双指针对数组进行操作。对于直接使用数组来操作的方式,我们可以通过两个方法来实现。 一种是将数组作为参数传递给方法,然后在方法中

    2024年02月02日
    浏览(38)
  • 力扣_数组26—合并两个有序数组

    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,

    2024年01月21日
    浏览(43)
  • 【面试经典150 | 数组】合并两个有序数组

    本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删: Tag:介绍本题牵涉到的知识点、数据结构; 题目来源:

    2024年02月09日
    浏览(45)
  • leetcode Median of Two Sorted Arrays

    Given two sorted arrays  nums1  and  nums2  of size  m  and  n  respectively, return  the median  of the two sorted arrays. The overall run time complexity should be  O(log (m+n)) . Example 1: Example 2: Constraints: nums1.length == m nums2.length == n 0 = m = 1000 0 = n = 1000 1 = m + n = 2000 -106 = nums1[i], nums2[i] = 106

    2023年04月08日
    浏览(41)
  • 合并两个有序数组(简单)

    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 ,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意: 最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况

    2024年01月18日
    浏览(43)
  • Leetcode. 88合并两个有序数组

    合并两个有序数组 核心思路: 依次比较,取较小值放入新数组中 i 遍历nums1 , j 遍历nums2 ,取较小值放入nums3中 那如果nums[i] 和nums[j]中相等,随便放一个到nums3 那如果nums[i] 和nums[j]中相等,随便放一个到nums3 此时 nums1 中的元素已经走完了,那么直接把 nums2 中剩下的元素拿到

    2023年04月08日
    浏览(98)
  • LeetCode88——合并两个有序数组

    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。 为了应对这种情况

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包