Java实现把两个数组合并为一个的方法总结

作者:jaycee110905 时间:2022-08-04 16:30:03 

本文实例讲述了Java实现把两个数组合并为一个的方法。分享给大家供大家参考,具体如下:

在Java中,如何把两个String[]合并为一个?

看起来是一个很简单的问题。但是如何才能把代码写得高效简洁,却还是值得思考的。这里介绍四种方法,请参考选用。

一、apache-commons

这是最简单的办法。在apache-commons中,有一个ArrayUtils.addAll(Object[], Object[])方法,可以让我们一行搞定:

String[] both = (String[]) ArrayUtils.addAll(first, second);

其它的都需要自己调用jdk中提供的方法,包装一下。

为了方便,我将定义一个工具方法concat,可以把两个数组合并在一起:

static String[] concat(String[] first, String[] second) {}

为了通用,在可能的情况下,我将使用泛型来定义,这样不仅String[]可以使用,其它类型的数组也可以使用:

static <T> T[] concat(T[] first, T[] second) {}

当然如果你的jdk不支持泛型,或者用不上,你可以手动把T换成String。

二、System.arraycopy()


static String[] concat(String[] a, String[] b) {
 String[] c= new String[a.length+b.length];
 System.arraycopy(a, 0, c, 0, a.length);
 System.arraycopy(b, 0, c, a.length, b.length);
 return c;
}

使用如下:


String[] both = concat(first, second);

三、Arrays.copyOf()

在java6中,有一个方法Arrays.copyOf(),是一个泛型函数。我们可以利用它,写出更通用的合并方法:


public static <T> T[] concat(T[] first, T[] second) {
T[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}

如果要合并多个,可以这样写:


public static <T> T[] concatAll(T[] first, T[]... rest) {
int totalLength = first.length;
for (T[] array : rest) {
 totalLength += array.length;
}
T[] result = Arrays.copyOf(first, totalLength);
int offset = first.length;
for (T[] array : rest) {
 System.arraycopy(array, 0, result, offset, array.length);
 offset += array.length;
}
return result;
}

使用如下:


String[] both = concat(first, second);
String[] more = concat(first, second, third, fourth);

四、Array.newInstance

还可以使用Array.newInstance来生成数组:


private static <T> T[] concat(T[] a, T[] b) {
 final int alen = a.length;
 final int blen = b.length;
 if (alen == 0) {
   return b;
 }
 if (blen == 0) {
   return a;
 }
 final T[] result = (T[]) java.lang.reflect.Array.
     newInstance(a.getClass().getComponentType(), alen + blen);
 System.arraycopy(a, 0, result, 0, alen);
 System.arraycopy(b, 0, result, alen, blen);
 return result;
}

希望本文所述对大家java程序设计有所帮助。

来源:http://blog.csdn.net/jaycee110905/article/details/9179227

标签:Java,数组合并
0
投稿

猜你喜欢

  • Java实现五子棋(附详细源码)

    2023-10-19 15:20:54
  • C#实现Zip压缩目录中所有文件的方法

    2021-05-29 15:41:47
  • Java使用DOM4j实现读写XML文件的属性和元素

    2021-10-19 00:21:52
  • Flutter 实现虎牙/斗鱼 弹幕功能

    2023-07-11 04:11:11
  • Java 调用Restful API接口的几种方式(HTTPS)

    2021-06-19 02:26:55
  • java 优雅关闭线程池的方案

    2022-03-20 23:05:44
  • java servlet 几种页面跳转的方法

    2023-08-02 18:12:07
  • Java Lambda表达式入门示例

    2022-03-19 00:15:47
  • MyBatis常用的jdbcType数据类型

    2023-09-18 19:09:35
  • 一文详解Java中的Stream的汇总和分组操作

    2021-12-24 17:32:54
  • 安卓系统中实现摇一摇画面振动效果的方法

    2023-12-05 02:53:53
  • Java通过jersey实现客户端图片上传示例

    2022-09-17 15:44:24
  • Android实现自由拖动并显示文字的悬浮框

    2023-06-08 06:30:39
  • 详解C# Protobuf如何做到0分配内存的序列化

    2021-11-26 01:09:11
  • SpringBoot集成RabbitMQ的方法(死信队列)

    2023-06-10 15:12:06
  • Java如何构造DSL方法重构

    2021-10-10 02:04:09
  • Dubbo retries 超时重试机制的问题原因分析及解决方案

    2023-11-29 08:22:38
  • C#中Linq的去重方式Distinct详解

    2022-01-23 03:53:36
  • Spring Data Jpa的四种查询方式详解

    2021-10-10 10:35:26
  • Dagger2 Android依赖注入学习笔记

    2021-11-27 17:15:54
  • asp之家 软件编程 m.aspxhome.com