Java 调整数组大小

Java 调整数组大小,java,processing,Java,Processing,如果我已经声明了一个数组ex.int a[5],有没有什么方法可以将a[]的长度改为3?也就是说,我需要把a.length的值减少到50 请用我标记的任何语言告诉我解决方案 我还想作为另一部分。 如果数组a[]是动态创建的,并且我已经为它输入了100个元素。稍后,我需要通过删除最后50个元素来修改相同的数组。现在数组应该只有50个元素,代码a.length应该返回值50。我怎样才能做到这一点? 注意:我不想使用第三个变量或将内容复制到另一个数组。这是为了避免浪费内存。在Java中,您可以使用Li

如果我已经声明了一个数组ex.int a[5],有没有什么方法可以将a[]的长度改为3?也就是说,我需要把a.length的值减少到50

请用我标记的任何语言告诉我解决方案

我还想作为另一部分。 如果数组a[]是动态创建的,并且我已经为它输入了100个元素。稍后,我需要通过删除最后50个元素来修改相同的数组。现在数组应该只有50个元素,代码a.length应该返回值50。我怎样才能做到这一点? 注意:我不想使用第三个变量或将内容复制到另一个数组。这是为了避免浪费内存。

在Java中,您可以使用List,尤其是ArrayList


您还可以检查该实用程序。

您不能更改数组的大小,但可以创建一个新的更大的数组并将旧数组复制到其中。如果不想复制内容,那么首先创建一个足够大的数组

如果您打算大量修改数组,最好使用集合框架中的类。对于原始字节,数组或ByteBuffer更合适,但即使是ByteBuffer也无法动态调整大小


还有,内存是一个问题吗?我们在谈论多少数据?1GB?2GB?10GB?

不确定其他语言,但在JAVA中,不能更改数组大小。唯一的选择是装箱一个较小/较大尺寸的新阵列,并适当复制内容。这与ArrayList用于动态增加其大小的逻辑相同。有不同的因素影响arraylist的增长,因此查看源代码可以让您更深入地了解。

在java/c++中,无法增加/减少为数组分配的内存。
如果需要大小不同的容器,则应使用列表容器。如果不想使用容器,则每次需要更改数组大小时都必须重新分配新内存。它具有调整大小功能。

您可能从其他答案中了解到,在创建阵列后,不可能更改阵列的大小。当你说

int [] A = new int[5]; 
你真正想说的是,你有一个名为“A”的对象,你想在其中放入一个整数数组,大小为5。您不能更改该数组。您只需说一下,就可以在“A”中放入一个新的整数数组,大小为3:

A = new int[3];
如果这样做,只要没有其他引用,旧数组就会被垃圾收集器丢弃。您只需将旧阵列中的所有内容复制到新阵列中,就完成了!这也会改变长度

下面是一个小测试代码:

int [] a = new int[5];
a[0] = 2;
a[1] = 5;
a[2] = 1;
a[3] = 6;
a[4] = 0;
println(a.length); // prints 5
int [] temp = new int[3];
System.arraycopy(a,0,temp,0,temp.length);
a = temp;
temp = null;
println(a.length); //prints 3
这被认为是一种丑陋的方法,因为您可以使用ArrayList(可以直接调整大小)更优雅地执行此操作


技术上,这是将数组复制到一个新数组中,但它可能是你要寻找的

。我建议你去JavaAdvices中的集合类,在C++中没有一种安全的方法来重新排列数组。您需要一个用户定义的类型,例如std::vector。这可以用作数组,但它不是数组;a、 长度;//给出5我需要将数组修改为[]={10,5,6};a.长度//应该返回3Java、C++还是处理?选一个。嘿,你们大家如果不知道答案,为什么要呕吐?我只问了我的疑问。所有人都投了反对票,请让我知道你为什么这么做。我是新来的。你的答复将有助于我不降低我的声誉。java C++的java列表,即.ngkrkjava的列表,.g.fouad,他说c++/java,而不仅仅是java. @ Neelkrk,即使在C++中,我也认为如果你要一直调整容器的大小,列表就有它的优点。这就是为什么我提到了java列表接口,它由ARARYList数组支持的列表容器实现,相当于C++向量和链接表。我认为链表和数组支持列表在这里是可行的选择。如果没有关于他正在做什么的更多信息,我们不得不假设他想要一个允许随机索引的数组。列表不允许使用随机索引,因此它不是等效的替换项。在C++中,基本数据类型的向量通常比调整列表的大小要快。我不知道什么是数组支持的列表容器,但是一个向量存储它的数据是一个连续的内存数组。有人会说它在处理中可用吗。谢谢你,你说它在处理中可用是什么意思?ArrayList是列表接口的可调整大小的数组实现,如本文所述:我接受它。但这不是我需要的。因为我们使用临时变量。我接受尺寸不能改变的事实。谢谢你如果你告诉我们你为什么有这些问题,你可能会得到更好的答案和更快乐的回答
离子!如果只是为了避免浪费内存,你应该听从这里的建议。除非您正在处理千兆字节的数据集,或者部署在一个非常有限的设备上,否则最好使用ArrayList,至少为了使代码更简单和可维护。Petros Koutsolampros::