如何向数组中添加新元素?

359
我有以下代码:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");

这两个附加操作无法编译。如何使其正常工作?


7
尽管这个问题已经有10多年了,比较列表和数组的区别很重要,但令人惊讶的是,我不得不深入挖掘才能找到如何实际上创建一个包含新元素的结果数组,就像最初的提问者所要求的那样。 - rado
20个回答

5
您需要使用集合列表。您无法重新定义数组的维数。

3
如果您真的想要调整数组大小,可以像这样操作:
String[] arr = {"a", "b", "c"};
System.out.println(Arrays.toString(arr)); 
// Output is: [a, b, c]

arr = Arrays.copyOf(arr, 10); // new size will be 10 elements
arr[3] = "d";
arr[4] = "e";
arr[5] = "f";

System.out.println(Arrays.toString(arr));
// Output is: [a, b, c, d, e, f, null, null, null, null]

3
如果你想要将数据存储在类似于这样的简单数组中:
String[] where = new String[10];

如果您想向其中添加一些元素,如数字,请使用StringBuilder,它比连接字符串更有效率。
StringBuilder phoneNumber = new StringBuilder();
phoneNumber.append("1");
phoneNumber.append("2");
where[0] = phoneNumber.toString();

这是一种更好的方法来构建并将字符串存储到你的“where”数组中。

3

我在Java方面经验不是很丰富,但一直都被告知数组是静态结构,具有预定义的大小。你必须使用ArrayList、Vector或其他动态结构。


2

数组的大小是不可修改的。如果您必须使用数组,可以使用以下方法:

System.arraycopy(src, srcpos, dest, destpos, length); 

2

您可以创建一个ArrayList,并使用Collection.addAll()将字符串数组转换为ArrayList。


2
你可以简单地这样做:
System.arraycopy(initialArray, 0, newArray, 0, initialArray.length);

1

代码无法编译,因为数组没有名为“append”的函数。更好、更正确的方法是使用ArrayList。

import java.util.ArrayList;

ArrayList where = new ArrayList<String>();

where.add(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1")
where.add(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1")

0

还可以预先分配足够大的内存空间。这是一个简单的堆栈实现:程序应该输出3和5。

class Stk {
    static public final int STKSIZ = 256;
    public int[] info = new int[STKSIZ];
    public int sp = 0; // stack pointer
    public void push(int value) {
        info[sp++] = value;
    }
}
class App {
    public static void main(String[] args) {
        Stk stk = new Stk();
        stk.push(3);
        stk.push(5);
        System.out.println(stk.info[0]);
        System.out.println(stk.info[1]);
    }
}

-1

books[books.length + 1] = new_book_name;

array_name[array_name.length + 1] = "新值";


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接