Java 连接合并两个数组(Array)的五种方法

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

1、使用泛型方法和System.arraycopy实现

T可以是基础类型,也是类类型文章来源地址https://www.toymoban.com/news/detail-744472.html

public static <T> T concatenate(T a, T b) {
    if (!a.getClass().isArray() || !b.getClass().isArray()) {
        throw new IllegalArgumentException();
    }
    Class<?> resCompType;
    Class<?> aCompType = a.getClass().getComponentType();
    Class<?> bCompType = b.getClass().getComponentType();
    if (aCompType.isAssignableFrom(bCompType)) {
        resCompType = aCompType;
    } else if (bCompType.isAssignableFrom(aCompType)) {
        resCompType = bCompType;
    } else {
        throw new IllegalArgumentException();
    }
    int aLen = Array.getLength(a);
    int bLen = Array.getLength(b);
    @SuppressWarnings("unchecked")
    T result = (T) Array.newInstance(resCompType, aLen + bLen);
    System.arraycopy(a, 0, result, 0, aLen);
    System.arraycopy(b, 0, result, aLen, bLen);        
    return result;
}

2、使用ArrayUtils.addAll实现

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

3、不使用System.arraycopy实现

static String[] concat(String[]... arrays) {
    int length = 0;
    for (String[] array : arrays) {
        length += array.length;
    }
    String[] result = new String[length];
    int pos = 0;
    for (String[] array : arrays) {
        for (String element : array) {
            result[pos] = element;
            pos++;
        }
    }
    return result;
}

4、使用ObjectArrays.concat实现

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

5、使用Arrays.copyOf()实现

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;
}

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

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

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

相关文章

  • NO.17 JAVA中创建线程池的五种方法

    JAVA中创建线程池主要有两类方法,一类是通过Executors工厂类提供的方法,该类提供了4种不同的线程池可供使用。另一类是通过ThreadPoolExecutor类进行自定义创建。 目录 一、通过Executors类提供的方法。 1、newCachedThreadPool 2、newFixedThreadPool 3、newScheduledThreadPool 4、newSingleThreadExec

    2024年02月08日
    浏览(43)
  • LeetCode-Java:88合并两个有序数组

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

    2024年02月05日
    浏览(51)
  • C语言指向二维数组的四种指针以及动态分配二维数组的五种方式

    当二维数组作为结构成员或返回值时,通常需要根据用户传递的参数来决定二维数组的大小,此时就需要动态分配二维数组。 如果现在有一个二维数组 a[3][2] ,那么将有以下几种指针可以指向它: 方式一 方式二: 在应用场景中通常采用以下三种方式动态分配二维数组,因为

    2024年02月04日
    浏览(54)
  • 小米路由无法连接WIFI的五种解决办法

    小米路由目前可能因为不够成熟的原因,有些情况会出现连上WIFI无法上网的问题。情况分两种:一种是连上WIFI,但是管理界面显示没有连上。第二种是管理界面显示连接成功但是无法上网,打不开网页。 小米路由器app v4.2.5 安卓稳定版 类型: 系统工具 大小: 26.38MB 语言:

    2024年02月08日
    浏览(43)
  • Hive导入数据的五种方法

            在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且 文件夹名字就是表名 ; 文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse; 也可以在建表的时候使用location语句指定任意路径。         不管路径在哪里,只有把数

    2024年01月18日
    浏览(36)
  • Linux清空日志的五种方法

    在Linux中,有多种方法可以清空日志文件。下面是五种常用的方法: 使用truncate命令: truncate命令可以将文件截断为指定大小或清空文件内容。 示例:清空名为logfile.log的日志文件 使用cat命令重定向: cat命令可以将标准输入重定向到文件,使用空内容覆盖文件内容。 示例:

    2024年02月11日
    浏览(36)
  • <JDBC> 获取数据库连接的五种方式:你真的get到了吗?

    ❤写在前面 ❤博客主页: 努力的小鳴人 ❤系列专栏: JDBC ❤欢迎小伙伴们, 点赞👍关注🔎收藏🍔 一起学习! ❤如有错误的地方,还请小伙伴们指正!🌹 JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义

    2023年04月08日
    浏览(59)
  • 隐藏服务器IP的五种方法

    随着互联网的不断发展,用户们在日常使用通信设备访问网站时的风险也在不断增大。因为IP 地址对 Internet 上的每个人都是可见的。根据 IP 地址,其他互联网用户可以跟踪用户的位置、用户使用哪个提供商连接到互联网等等。因此许多用户都在寻求隐藏IP地址的方法,翔域云

    2024年02月07日
    浏览(52)
  • axios发送请求的五种方法详解

    1、带参数 // 方式一: //请求的地址为 localhost:8080/url?id=1         axios.get(\\\'/url\\\', {params: {id: 1}})   // 方式二: // 请求的地址为 localhost:8080/url?id=2 axios({     methods: \\\'get\\\',     url: \\\'/url\\\',     params: {         id: 2     } }) 2、不带参数 // 方式一:  axios({ methods: \\\'get\\\', url: \\\'/url\\\' }) // 方式二

    2024年04月25日
    浏览(34)
  • Java遍历Map的五种方式

    java中遍历map一般有五种方法,从最早的Iterator,到java5支持的foreach,再到java8的Lambda表达式。 如果只是获取key,或者value,推荐使用keySet或者values方式 如果同时需要key或者value推荐使用entrySet 如果需要在遍历过程中删除元素推荐使用Iterator 如果需要在遍历过程中增加元素,可

    2024年02月03日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包