zoukankan      html  css  js  c++  java
  • Java – How to join Arrays

    Java – How to join Arrays

    In this article, we will show you a few ways to join a Java Array.

    Apache Commons Lang – ArrayUtils
    Java API
    Java 8 Stream
    1. Apache Commons Lang – ArrayUtils
    The simplest way is add the Apache Commons Lang library, and use ArrayUtils. addAll to join arrays. This method supports both primitive and object type arrays.

    JoinArray.java
    package com.mkyong.example.array;

    import org.apache.commons.lang3.ArrayUtils;

    import java.util.Arrays;

    public class JoinArray {

    public static void main(String[] args) {

    String[] s1 = new String[]{"a", "b", "c"};
    String[] s2 = new String[]{"d", "e", "f"};

    String[] result = ArrayUtils.addAll(s1, s2);

    System.out.println(Arrays.toString(result));

    int [] int1 = new int[]{1,2,3};
    int[] int2 = new int[]{4,5,6};

    int[] result2 = ArrayUtils.addAll(int1, int2);

    System.out.println(Arrays.toString(result2));

    }

    }

    Output

    [a, b, c, d, e, f]
    [1, 2, 3, 4, 5, 6]
    For Maven user.

    pom.xml
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
    </dependency>


    2. Java API
    Pure Java API example, supports both primitive and generic types.

    JoinArray.java
    package com.mkyong.example.array;

    import java.lang.reflect.Array;
    import java.util.Arrays;

    public class JoinArray {

    public static void main(String[] args) {

    String[] s1 = new String[]{"a", "b", "c"};
    String[] s2 = new String[]{"d", "e", "f"};
    String[] s3 = new String[]{"g", "h", "i"};

    String[] result = joinArrayGeneric(s1, s2, s3);

    System.out.println(Arrays.toString(result));

    int[] int1 = new int[]{1, 2, 3};
    int[] int2 = new int[]{4, 5, 6};
    int[] int3 = new int[]{7, 8, 9};

    int[] result2 = joinArray(int1, int2, int3);

    System.out.println(Arrays.toString(result2));

    }

    static <T> T[] joinArrayGeneric(T[]... arrays) {
    int length = 0;
    for (T[] array : arrays) {
    length += array.length;
    }

    //T[] result = new T[length];
    final T[] result = (T[]) Array.newInstance(arrays[0].getClass().getComponentType(), length);

    int offset = 0;
    for (T[] array : arrays) {
    System.arraycopy(array, 0, result, offset, array.length);
    offset += array.length;
    }

    return result;
    }

    static int[] joinArray(int[]... arrays) {
    int length = 0;
    for (int[] array : arrays) {
    length += array.length;
    }

    final int[] result = new int[length];

    int offset = 0;
    for (int[] array : arrays) {
    System.arraycopy(array, 0, result, offset, array.length);
    offset += array.length;
    }

    return result;
    }

    //create other overloaded primitive type - long, double...
    //static long[] joinArray(long[]... arrays)
    }

    Output

    [a, b, c, d, e, f, g, h, i]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    3. Java 8 Stream
    Java 8 Stream example to join arrays.

    JoinArray.java
    package com.mkyong.example.array;

    import java.util.Arrays;

    import java.util.stream.IntStream;
    import java.util.stream.Stream;

    public class JoinArray {

    public static void main(String[] args) {

    String[] s1 = new String[]{"a", "b", "c"};
    String[] s2 = new String[]{"d", "e", "f"};
    String[] s3 = new String[]{"g", "h", "i"};

    //join object type array
    String[] result = Stream.of(s1, s2, s3).flatMap(Stream::of).toArray(String[]::new);
    System.out.println(Arrays.toString(result));

    int [] int1 = new int[]{1,2,3};
    int[] int2 = new int[]{4,5,6};
    int[] int3 = new int[]{7,8,9};

    //join 2 primitive type array
    int[] result2 = IntStream.concat(Arrays.stream(int1), Arrays.stream(int2)).toArray();

    //join 3 primitive type array, any better idea?
    int[] result3 = IntStream.concat(Arrays.stream(int1),
    IntStream.concat(Arrays.stream(int2), Arrays.stream(int3))).toArray();

    System.out.println(Arrays.toString(result2));

    System.out.println(Arrays.toString(result3));

    }

    }
    Output

    [a, b, c, d, e, f, g, h, i]
    [1, 2, 3, 4, 5, 6]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    Any better Java 8 Stream example? Do comment below.

    from:http://www.mkyong.com/java/java-how-to-join-arrays/

  • 相关阅读:
    实现类似add(1)(2)(3)的函数
    Chrome安装助手踩坑
    升级webpack4错误处理
    vue项目埋点
    如何理解vue中的v-bind?
    不能不知道的webpack基本配置
    IE9及以下浏览器升级提示
    HTML5常用API
    css中clip属性
    Web开发展望
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/10092894.html
Copyright © 2011-2022 走看看