java - 将值动态附加到 long[] 数组中

标签 java android

我需要一些关于向数组中添加值的帮助

例如

long[] s = new long[] {0, 1, 2};

当我这样做时,我用值实例化了一个数组

但是如果我有另一个值,我如何将它附加到上面的数组

3, 4, 5

让它变成这样

s = new long[] {1, 2, 3, 4, 5, 6};

我尝试了 System.arraycopy 函数,但我只能覆盖数组,当我尝试附加到它时,我得到一个空指针异常

谢谢

解决方案

我将其与 for 循环一起使用,一次一个地输入值

        long[] tmp = new long[a.length + x.length];
    System.arraycopy(a, 0, tmp, 0, a.length);
    System.arraycopy(x, 0, tmp, a.length, x.length);
    a=tmp;

最佳答案

您不能在 Java 中将元素“追加”到数组中。数组的长度在创建时确定,不能动态更改。

如果你真的需要 long[]解决方案是创建一个更大的数组,复制元素,并将引用指向新数组,如下所示:

long[] s = new long[] {0, 1, 2};
long[] toAppend = { 3, 4, 5 };

long[] tmp = new long[s.length + toAppend.length];
System.arraycopy(s, 0, tmp, 0, s.length);
System.arraycopy(toAppend, 0, tmp, s.length, toAppend.length);

s = tmp;  // s == { 0, 1, 2, 3, 4, 5 }

但是,您可能想要使用 ArrayList<Long>为此目的。 在这种情况下,您可以使用 .add 添加元素。 -方法。如果你选择这个选项,它应该看起来像

// Initialize with 0, 1, 2
ArrayList<Long> s = new ArrayList<Long>(Arrays.asList(0L, 1L, 2L));

// Append 3, 4, 5
s.add(3L);
s.add(4L);
s.add(5L);


long[] longArray = new long[s.size()];
for (int i = 0; i < s.size(); i++)
    longArray[i] = s.get(i);

关于java - 将值动态附加到 long[] 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144549/

相关文章:

java - 从内存中删除 View

java - 检查客户的诚信度

Java Swing 打包窗口错误

java - 当进程被终止时,Ehcache 不会刷新到磁盘

android - 使用 adb 连接 WIFI

android - 是否可以将两个(正在积极开发的)Android 应用程序模块合并到同一个 Android Studio 项目中?

java - 迭代线程之间共享的数组

java - 尝试在Android中的RelativeLayout的末尾添加按钮

java - 如何从根模块运行子模块中找到的应用程序?

Android:第一个元素 ListView 表现得很奇怪