Android 项目数量未知的数组

Android arrays of unknown number of items

如果我不知道数组会有多少项,我可以这样做吗

long[] longarray = new long[99];

然后

longarray[0] = 11;
longarray[1] = 22;
longarray[2] = 33;

?所以,我估计将由大约 5 到 60 个项目创建。

99项的声明是否占用大量内存?

我的答案:

long[] longarray = new long[1];
long[] temparray;
int cnt = -1;
int cntp;
...
public void myAdd(long value) {
    cnt++;
    cntp = cnt + 1;
    if (cnt == 0) { longarray[0] = value } //the first time
    else {
    temparray = new long[cnt];
    System.arraycopy(longarray, 0, temparray, 0, cnt);
    longarray = new long[cntp];
    System.arraycopy(temparray, 0, longarray, 0, cnt);
    longarray[cnt] = value;
    }
}

这基本上就是 listarray add() 所做的。

使用列表。 Java 中最常见的内置列表是 ArrayListLinkedList:

List<Long> longlist = new ArrayList<Long>;
longlist.add(11);
longlist.add(22);
longlist.add(33);

等使用 longlist.get(i) 检索值,其中 i 是您的索引。

一个long在内存中占用8字节,所以一个99长的数组需要(99 * 8)字节+几个字节的开销。 说是否很多取决于您的用例,但对于大多数系统来说并不多。

但这确实不是一个好的做法,如果您没有充分的理由不这样做,您确实应该使用列表。他们像冠军一样处理动态分配。

如果您有理由不使用列表,请告诉我们。