如何向 Java 数组动态添加项目?
2022-08-31 11:35:16
在 PHP 中,您可以通过以下方式将元素动态添加到数组中:
$x = new Array();
$x[] = 1;
$x[] = 2;
在此之后,将是一个如下数组:.$x
{1,2}
有没有办法在Java中做类似的事情?
在 PHP 中,您可以通过以下方式将元素动态添加到数组中:
$x = new Array();
$x[] = 1;
$x[] = 2;
在此之后,将是一个如下数组:.$x
{1,2}
有没有办法在Java中做类似的事情?
看看 java.util.LinkedList 或 java.util.ArrayList
List<Integer> x = new ArrayList<Integer>();
x.add(1);
x.add(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数组实际上与添加“max键”的Java HashMap完全相同,因此它将知道接下来要使用哪个键,以及奇怪的迭代顺序(以及整数键和某些字符串之间奇怪的等价关系)。但对于简单的索引集合,最好使用Java中的List,就像其他答案一样。
如果由于将每个 int 包装在 Integer 中的开销而想要避免使用,请考虑对基元类型使用集合的重新实现,基元类型在内部使用数组,但只有在内部数组已满时才会在每次更改时执行复制(就像 ArrayList 一样)。(一个快速谷歌的例子是这个IntList类。List
番石榴包含创建此类包装器的方法,等。Ints.asList
Longs.asList