我想将两个字符串数组传递给一个字符串varsargs。

即。

public void doSomething(String... ){

}

public void test(){
String[] arrayOne = ...
String[] arrayTwo = ...
doSomething(arrayOne, arrayTwo); //Doesn't work but just for an example
}


是仅合并两个数组的最佳方法,还是有更好的方法呢?

最佳答案

可悲的是在Java中是不可能的,因为没有散布运算符(例如在Kotlin,Ecmascript 6中)。您必须通过创建中间数组来解决此问题:

String arrayThree = new String[arrayOne.length + arrayTwo.length];
System.arraycopy(arrayOne, 0, arrayThree, 0, arrayOne.length);
System.arraycopy(arrayTwo, 0, arrayThree, arrayOne.length, arrayTwo.length);

doSomething(arrayThree);


或使用Stream

String arrayThree = Stream.concat(Arrays.stream(arrayOne), Arrays.stream(arrayTwo))
                          .toArray(String[]::new);
doSomething(arrayThree);


如前所述,这在kotlin中是可能的,可以这样完成:

val arrayOne: Array<String> = ...
val arrayTwo: Array<String> = ...

doSomething(*arrayOne, *arrayTwo)


甚至在javascript中:

const arrayOne = ...
const arrayTwo = ...

doSomething([...arrayOne, ...arrayTwo]);

10-07 19:15