java - 从现有数组创建一个数组并添加额外的元素

标签 java arrays variadic-functions

我有一个接受可变参数字符串数组的方法

void count(long delta, String... tags);

对于大多数情况,我有一个预定义的标签数组

String[] tags = { "foo_tag:Foo",
                  "bar_tag:Bar",
                  "baz_tag:Baz"
                };

并且每次调用"project_id:12345"

时,只有一个标签被添加到预定义标签中

所以count的调用应该是这样的:

count(delta, "foo_tag:Foo", "bar_tag:Bar", "baz_tag:Baz", "project_id:12345");

我怎样才能简单地创建一个新数组,其中包含我现有的一个元素加上附加元素,而不是调用该方法?

类似于这个假设的 Arrays.append 方法:

count(delta, Arrays.append(tags, "project_id:12345"));

这是存储统计操作,不是业务逻辑,所以我希望这个操作越快越好。
目前,我有辅助方法 appendTag,但它对我来说并不优雅

private String[] appendTag(String[] tags, String s)
{
    String[] result = new String[tags.length + 1];
    System.arraycopy(tags, 0, result, 0, tags.length);
    result[result.length-1] = s;
    return result;
}

最佳答案

在 java 中,数组具有固定大小,因此不可能通过向数组添加新元素来扩展数组

您需要创建一个更大的新数组并将第一个元素复制到其中,然后向其中添加新元素,但它还不是动态

我的建议是使用 Collection 可能是 ArrayList 您将从它的内置方法中获益,例如 .add()

关于java - 从现有数组创建一个数组并添加额外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920321/

相关文章:

java - 如何在 Android 中使用一组权限同时安装多个应用程序?

java - 无法从 InputStream 读取多个可外部化对象

javascript - 在javascript中转换为分层数组

php - 数组作为 session 变量

javascript - 如何使用javascript在txt文件的新行中打印数组的每个元素?

swift - 调用实例的描述方法时快速内存泄漏

java - 客户端加密

Java 警告 : Varargs method could cause heap pollution from non-reifiable varargs parameter

java - 传递无参数时 Var args 参数困惑

java - 我可以强制所有继承一个类的 child 继承一个特定的方法吗?