jua*_*cks 2 java arrays parameters recursion list
我会像下面的递归方法:
private Node getElementRec(Node currentNode, String ... names) {
if (null == names || names.length == 0)
return currentNode;
else {
Node child = currentNode.getChildWithName(names[0]);
return getElementRec(child, namesAux.subList(1, names[1,]));
}
}
Run Code Online (Sandbox Code Playgroud)
由于可变长度的Java参数(这里names
)是数组,我不能做类似的东西names.sublist(1, names.size())
虽然效率很低,但我试图将数组转换为列表然后将其传递给方法,但它不接受列表
所以问题是:在Java中是否可以对可变长度参数进行递归(Type ... parameter)
?我展示的东西有可能吗?
谢谢
您可以使用Arrays类中的copyOfRange函数传递给函数
Arrays.copyOfRange(names, 1, names.length)
Run Code Online (Sandbox Code Playgroud)
避免复制的另一种方法是修改函数以接受开始和结束索引:
private Node getElementRec(Node currentNode, int start, int end, String ... names) {
if (null == names || start >= end || start < 0 || end > names.length)
return currentNode;
else {
Node child = currentNode.getChildWithName(names[start]);
return getElementRec(child, start+1, end, names);
}
}
Run Code Online (Sandbox Code Playgroud)