我想将两个字符串数组传递给一个字符串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]);