为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态地向Java数组添加项目?

如何动态地向Java数组添加项目?

慕运维8079593 2019-11-29 09:24:32
在PHP中,您可以通过以下方式将元素动态添加到数组中:$x = new Array();$x[] = 1;$x[] = 2;之后,$x将是一个像这样的数组:{1,2}。有没有办法在Java中做类似的事情?
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

查看java.util.LinkedList或java.util.ArrayList


List<Integer> x = new ArrayList<Integer>();

x.add(1);

x.add(2);


查看完整回答
反对 回复 2019-11-29
?
森林海

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等等。


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信