`
frank1998819
  • 浏览: 758330 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Java中如何把两(多)个数组合并为一个(转)

    博客分类:
  • 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 数字转换成中文读法

    在这个代码示例中,`numToChinese`函数接收一个整数,然后通过计算每个数位上的数字并结合单位映射表生成中文读法。`simplify`函数用于删除不必要的“零”字符,以确保输出的中文读法简洁正确。`isZeroUnit`函数用来...

    Java实现多个wav文件合成一个的方法示例

    Java实现多个wav文件合成一个的方法示例 本文介绍了Java实现多个wav文件合成一个的方法,涉及java文件流读写、编码转换、解析等相关操作技巧。 知识点1:Java中的文件流读写 在Java中,文件流读写是通过使用`...

    java阿拉伯数字转换成中文传统读法

    在编程领域,尤其是在Java开发中,有时我们需要将阿拉伯数字(1, 2, 3等)转换为中文的传统读法(如“一”,“二”,“三”)。这个任务涉及到字符串处理、数字转换以及对中文字符的理解。在本文中,我们将深入探讨...

    java钱币小写转换大写

    在Java编程中,将钱币小写金额转换为大写金额是一项常见的需求,特别是在财务系统或者电商平台上,为了符合规范和避免误解,金额通常会以大写形式展示。本知识点主要探讨如何利用Java实现这一功能。 首先,我们需要...

    [转]两个java写的组合算法

    在这个场景中,我们有两个Java编写的类,名为"choose.java"和"Comb.java",它们可能是实现组合算法的不同方法。下面将详细探讨这两个类可能涉及的Java编程知识和组合算法概念。 首先,"choose.java"可能实现了组合...

    JAVA_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java中文转换

    函数内部可能包括多个循环,逐位处理数字,并组合成最终的中文字符串。 6. **测试与优化**:编写测试用例,确保所有可能的数字转换都正确无误。同时,为了提高效率,可以考虑使用预编译的正则表达式或优化的算法来...

    数字日期转换成中文日期

    将数字日期转换成中文日期的工具类。eg:2014-07-15会转换成二零一四年七月十五日。

    java数字转大写

    以下将详细讲解如何实现这个功能,并结合提供的两个文件名`FourNumbers.java`和`NumberConvert2.java`来推测可能的代码实现。 首先,我们要了解数字转大写的基本规则。在中文中,1到9的大写分别为壹、贰、叁、肆、...

    java三种字符数组合并的方法.doc

    Java 语言中,数组合并是指将多个数组元素合并到一个新的数组中。这种操作在实际开发中非常常见,本文将介绍三种字符数组合并的方法。 方法一:使用循环遍历 在第一个方法中,我们使用循环遍历的方式来合并两个...

    java转换输出

    在Java编程语言中,将数字转换为大写数字输出是一个常见的需求,特别是在处理财务、会计等领域,需要将数值以规范的格式展示。本篇将详细讲解如何实现这一功能,通过一个简单的Java小示例来说明。 首先,我们需要...

    java 数字转化为汉字大写

    在IT行业中,尤其是在编程领域,将数字转换为汉字大写是一项常见的需求,特别是在财务和会计系统中,因为中国的财务报表通常要求使用汉字大写来表示金额,以避免篡改和提高准确性。Java作为广泛使用的编程语言,提供...

    26进制字母转换成数字

    在给定的代码中,我们可以看到一个Java类 ts,它包含了两个方法:letterToNum(String str) 和 charToNum(char ch)。其中,letterToNum(String str) 方法用于将一个字符串转换成数字,而 charToNum(char ch) 方法用于...

    gray码生成组合算法的java代码

    例如,相邻的两个二进制数通过异或操作就可以得到一个Gray码。 6. **集合和迭代**:程序可能使用Java的集合框架(如ArrayList或LinkedList)存储生成的Gray码序列,并通过迭代器遍历和输出。 7. **错误处理**:...

    java生成字母数字组合的随机数示例 java生成随机数

    代码中定义了一个名为`GenerateRandomNumber`的类,并在`main`方法中调用了`getCharAndNumr()`函数,该函数负责生成指定长度的字母数字组合的字符串。这个函数接收一个整数参数`length`,表示生成的字符串的长度。 ...

    java 字符串转16进制Ascii

    在Java编程语言中,将字符串转换为16进制ASCII值是一个常见的操作,尤其是在处理数据编码、网络通信或存储时。这个过程涉及到字符到数字的转换,并且通常使用`Character`类和`Integer`类的方法来完成。让我们深入...

    「java三种字符数组合并的方法」.docx

    数组合并是指将两个或多个数组合并成一个数组。下面将介绍三种字符数组合并的方法。 方法一:使用循环迭代 在第一个方法中,我们使用了两个字符串数组 a 和 b,然后创建了一个新的字符串数组 c,用于存储合并后的...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    - 二进制是一种基于2的计数系统,只包含两个数字:0和1。 - 十六进制是一种基于16的计数系统,由0-9的阿拉伯数字和A-F的字母(代表10-15)组成。 - 在Java中,可以使用`Integer.parseInt()`或`Integer....

Global site tag (gtag.js) - Google Analytics