java两个数组连接_如何在Java中连接两个数组?

我需要在Java中串联两个String数组。

void f(String[] first, String[] second) {

String[] both = ???

}

最简单的方法是什么?

#1楼

一个简单的变体,可以连接多个数组:

public static String[] join(String[]...arrays) {

final List output = new ArrayList();

for(String[] array : arrays) {

output.addAll(Arrays.asList(array));

}

return output.toArray(new String[output.size()]);

}

#2楼

请原谅我为这个已经很长的列表添加了另一个版本。 我查看了每个答案,并决定我真的想要一个签名中仅包含一个参数的版本。 我还添加了一些参数检查功能,以便在意外输入的情况下从早期失败中获得明智的信息。

@SuppressWarnings("unchecked")

public static T[] concat(T[]... inputArrays) {

if(inputArrays.length < 2) {

throw new IllegalArgumentException("inputArrays must contain at least 2 arrays");

}

for(int i = 0; i < inputArrays.length; i++) {

if(inputArrays[i] == null) {

throw new IllegalArgumentException("inputArrays[" + i + "] is null");

}

}

int totalLength = 0;

for(T[] array : inputArrays) {

totalLength += array.length;

}

T[] result = (T[]) Array.newInstance(inputArrays[0].getClass().getComponentType(), totalLength);

int offset = 0;

for(T[] array : inputArrays) {

System.arraycopy(array, 0, result, offset, array.length);

offset += array.length;

}

return result;

}

#3楼

哇! 这里有很多复杂的答案,包括一些依赖于外部依赖性的简单答案。 这样做是如何的:

String [] arg1 = new String{"a","b","c"};

String [] arg2 = new String{"x","y","z"};

ArrayList temp = new ArrayList();

temp.addAll(Arrays.asList(arg1));

temp.addAll(Arrays.asList(arg2));

String [] concatedArgs = temp.toArray(new String[arg1.length+arg2.length]);

#4楼

思考问题的另一种方式。 要连接两个或多个数组,必须要做的就是列出每个数组的所有元素,然后构建一个新的数组。 这听起来像创建List ,然后在其上调用toArray 。 其他一些答案使用ArrayList ,那很好。 但是如何实施我们自己的呢? 这并不难:

private static T[] addAll(final T[] f, final T...o){

return new AbstractList(){

@Override

public T get(int i) {

return i>=f.length ? o[i - f.length] : f[i];

}

@Override

public int size() {

return f.length + o.length;

}

}.toArray(f);

}

我相信以上等效于使用System.arraycopy解决方案。 但是我认为这有它自己的美丽。

#5楼

ArrayList both = new ArrayList(Arrays.asList(first));

both.addAll(Arrays.asList(second));

both.toArray(new String[0]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值