通用数组尾函数

时间:2015-10-22 11:45:17

标签: java

需要使这个通用:

public static String[] tail(String[] array) {
    String[] result = new String[array.length - 1];
    System.arraycopy(array, 1, result, 0, result.length);
    return result;
}

这样:

assertArrayEquals(new Integer[]{2, 3}, tail(new Integer[]{1, 2, 3}));

assertArrayEquals(new String[]{"B", "C"}, tail(new String[]{"A", "B", "C"}));

assertArrayEquals(new String[]{"C"}, tail(tail(new String[]{"A", "B", "C"})));

assertArrayEquals(new String[]{}, tail(new String[]{"A"}).length);

而且tail(new String[0])是非法的。

我无法在SO上找到任何关于数组尾部的内容,只有List等的尾部,但我想在变长参数列表的上下文中使用而不将数组转换为{{ 1}}。

带有可变长度参数的tail的示例用法:

List

1 个答案:

答案 0 :(得分:5)

public static File file(String root, String... parts) {
    return file(new File(root), parts);
}

public static File file(File root, String... parts) {
    if (parts.length == 0)
        return root;
    return file(new File(root, parts[0]), tail(parts));
}

注意我建议重载原始类型以避免装箱。