我有一个字符串列表参数的函数,我想插入这个字符串列表参数的开始元素,以便我可以将它传递给其他函数作为参数,现在当我尝试按照加入的ArrayList但argArr有没有这样的方法。 。
ArrayList.add(0,"foo");
private void A(String... argsArr)
{
//insert element at beginning
B(argArr);
}
private void B(String... argsArr)
{
}
如果你想使用一个变量参数数组,你可以创建一个插入的元素的新数组。例如,使用流:
private void a(String... argsArr) {
String[] args2 = Stream.concat(Stream.of("foo"), Arrays.stream(args))
.toArray(String[]::new);
b( args2 );
}
如果你愿意,你可以创建一个没有流的新阵列。下面是一个使用临时表的简单方法。
private void a(String... argsArr) {
List<String> newList = new ArrayList<>();
newList.add("foo");
newList.addAll(Arrays.asList(argsArr));
b(newList.toArray(new String[newList.size()]));
}
如果你并不需要一个变量参数数组,你可以使用一个List <>参数。这将是很好的形式向新元素插入到一个不同的列表。调用者可以提供一个不可修改的列表,或者可能不希望其列表修改。
private void a2( List<String> args ) {
List<String> newList = new ArrayList<>( args );
newList.add(0, "foo"); // <-- Extra O(n) time to shift elements over.
b( newList );
}
您可以通过在现有列表的开头不插入提高常数因子的效率。
private void a2( List<String> args ) {
List<String> newList = new ArrayList<>( );
newList.add("foo");
newList.addAll( args );
b( newList );
}
qazxsw POI为可变长度数组,而不是一个qazxsw POI,这String...
上不可用您的ArrayList
PARAM。
你需要写一些逻辑来实现你想要的。一种可能性是列举如下:
add(index,element)
就在阵列复制到一个更大的阵列,并设置第0指数:
argsArr
由于private void A(String... argsArr){
List<String> list = Arrays.stream(argsArr).collect(Collectors.toList());
list.add(0,"New_Element_To_Be_Added");
B(list.toArray(new String[list.size()]));
}
是一个数组。