• 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/

  • 相关阅读:
    SYSTEM32 下的几乎所有文件的简单说明
    Windows2000 下管理员账户真的不安全
    Windows2000 下管理员账户真的不安全
    SYSTEM32 下的几乎所有文件的简单说明
    看看你电脑里面有多少垃圾文件浪费内存
    巧妙利用三招保护局域网中的 IP 地址
    Sun推出OpenSolaris 为技术立异注入生机
    高质量C /C编程指南附录B :C /C试题和答案
    高质量C /C编程指南第8章 C 函数的初级特性
    俄罗斯邮政将迁徙到Linux 有关机构已入手入手测试Linux
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/10092894.html
Copyright © 2020-2023  润新知