3 回答
TA贡献1887条经验 获得超5个赞
查看java.util.LinkedList或java.util.ArrayList
List<Integer> x = new ArrayList<Integer>();
x.add(1);
x.add(2);
TA贡献2011条经验 获得超2个赞
Java中的数组具有固定的大小,因此您不能像在PHP中那样“在末尾添加内容”。
与PHP行为有点类似:
int[] addElement(int[] org, int added) {
int[] result = Arrays.copyOf(org, org.length +1);
result[org.length] = added;
return result;
}
然后您可以编写:
x = new int[0];
x = addElement(x, 1);
x = addElement(x, 2);
System.out.println(Arrays.toString(x));
但是,这种方案对于较大的阵列而言效率极低,因为它每次都会复制整个阵列。(实际上,它并不完全等同于PHP,因为您的旧数组保持不变)。
实际上,PHP数组与Java HashMap完全相同,只是添加了“最大键”,因此它将知道接下来要使用哪个键以及一个奇怪的迭代顺序(以及整数键和某些字符串之间的等效关系)。但是对于简单的索引集合,最好像其他答复者一样使用Java中的List。
如果List由于将每个int包装在Integer中的开销而避免使用,请考虑对原始类型使用集合的重新实现,这些类型在内部使用数组,但仅当内部数组已满时才会对每个更改进行复制(就像ArrayList一样)。(一个快速搜索过的示例就是此IntList类。)
番石榴含有制造这种包装方法中Ints.asList,Longs.asList等等。
添加回答
举报