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/

最新文章

  1. python 爬取乌云所有厂商名字,url,漏洞总数 并存入数据库
  2. 10月23日上午PHP数组
  3. Learning with Trees
  4. 使用VS2010开发Qt程序的一点经验
  5. apply、call、callee、caller初步了解
  6. 删除github.com上repository(仓库)的方法
  7. mysql show processlist命令 详解
  8. Matlab 文件命名规则
  9. myBatis性能优化【转】
  10. CSS 响应式设计
  11. 客户端Webview重定向
  12. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  13. 微服务~Eureka实现的服务注册与发现及服务之间的调用
  14. Docker资源网站收藏
  15. 【Android 应用开发】Android中的回调Callback
  16. pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化
  17. 自动化测试基础篇--Selenium文件上传send_keys
  18. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee
  19. 关于input时间框设置了弹出选择就不能手动输入的控制
  20. windows应急响应入侵排查思路

热门文章

  1. Tomcat8配置进入管理端
  2. SQL Server 2008&mdash;&mdash;SQL命令INSERT
  3. directive完成UI渲染后执行JS
  4. Maven构建应用程序常用配置(转)
  5. 基于py3和pymysql查询某时间段的数据
  6. CentOS7 通过代理上网
  7. grep命令-v参数过滤以井号、分号开头的注释信息行及空白行
  8. 【php】(转载)分享一个好用的php违禁词 处理类
  9. 关于js中的回调函数callback
  10. Axure快速原型教程02--创建页面和设置界面