如果我不知道数组中有多少项,我可以吗
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()的作用。
答案 0 :(得分:0)
使用列表。 Java中最常见的内置列表是ArrayList
和LinkedList
:
List<Long> longlist = new ArrayList<Long>;
longlist.add(11);
longlist.add(22);
longlist.add(33);
等。使用longlist.get(i)
检索值,其中i
是您的索引。
答案 1 :(得分:0)
long 在内存中占用8个字节,因此99个long的数组占用(99 * 8)个字节+几个字节用于开销。 说它是否很多或者根本不依赖于你的用例,但是对于大多数系统来说它并不多。
但这不是一个好习惯,如果你没有充分的理由不这样做,你真的应该使用List。他们像champs一样处理动态分配。
如果您有理由不使用列表,请告诉我们。