Java实现把两个数组合并为一个的方法总结
本篇章节讲解Java实现把两个数组合并为一个的方法。分享给大家供大家参考,具体如下: 在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题。但是如何才能把代码写得高效简洁,却还是值得思考的。这里介绍四种方法,请参考选用。 一、apache-commons 这是最简单的办法。在apache-commons中,有一个
其它的都需要自己调用jdk中提供的方法,包装一下。 为了方便,我将定义一个工具方法concat,可以把两个数组合并在一起:
为了通用,在可能的情况下,我将使用泛型来定义,这样不仅String[]可以使用,其它类型的数组也可以使用:
当然如果你的jdk不支持泛型,或者用不上,你可以手动把T换成String。 二、System.arraycopy() static String[] concat(String[] a,String[] b) { String[] c= new String[a.length+b.length]; System.arraycopy(a,c,a.length); System.arraycopy(b,a.length,b.length); return c; } 使用如下: String[] both = concat(first,second); 三、Arrays.copyOf() 在java6中,有一个方法 public static <T> T[] concat(T[] first,T[] second) { T[] result = Arrays.copyOf(first,first.length + second.length); System.arraycopy(second,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,offset,array.length); offset += array.length; } return result; } 使用如下: String[] both = concat(first,second); String[] more = concat(first,second,third,fourth); 四、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,alen); System.arraycopy(b,alen,blen); return result; } 更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》 希望本文所述对大家java程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |