3

如何在不硬编码其大小的情况下初始化另一个类中的一个类的对象数组?

4

9 回答 9

11

使用列表。大小不需要在创建列表时声明。toArray() 方法将返回列表的数组表示。您可以使用多种实现,但最流行的往往是 ArrayList(尽管最好将实现映射到您的特定情况)。

于 2011-09-28T14:02:13.123 回答
10

数组在创建后具有固定大小。大小不需要在编译时知道但需要在创建时知道。例如:

public String[] createArray(int size) {
    // Not hard-coded, but array is not expandable
    return new String[size];
}

如果您想要一个可以随时间缩小的集合,请查看各种List<E>实现,例如ArrayList<E>.

于 2011-09-28T14:02:19.840 回答
3

数组的长度是固定的。我建议使用集合。

这是一篇关于收藏的文章:

http://en.wikipedia.org/wiki/Java_collections_framework

有了这些,您可以使用 Add() 命令或类似命令添加元素。

如前面的答案所述,ArrayList 或 List 是集合。

于 2011-09-28T14:09:42.647 回答
1

如其他地方所述,数组对象具有固定大小。如果出于某种原因必须使用数组,则可以使用以下一种或两种技术:

  • 使其大于您的需要,将未使用的条目保留为空。您可能希望保留一个“slotsUsed”变量。

  • 当数组变得太小时,制作一个更大的并将内容复制到其中。

这些都在 ArrayList 中使用。

于 2011-09-28T14:09:14.913 回答
1

Object[] 将始终是固定大小。如果您需要可变长度的集合,请尝试使用 ArrayList、LinkedList 或许多其他集合之一。

仔细挑选收藏品,因为它们都有不同的性能方面。

于 2011-09-28T14:02:22.263 回答
1

对于可变数组,使用其他容器对象。

使用一组对象时,使用 ArrayList 或 Vector 对象。您还可以使用对象键存储对象,例如“Name” = “Ben”,而不是 [0] = “Ben”。

Vector v = new Vector();
for(int i = 0; i < 100; i++){
 Object o = new Object();
 // init object
 v.addElement(o);
}

for(int i = 0; i < 100; i++){
 Object o = v.elementAt(i);
 // manipulate object
}

现在你有一个未定义长度的对象的任意列表。使用 vector.size() 方法找到的大小。

java.util 包是必需的,并且是 J2SE 1.3 和更高版本的一部分。

于 2011-09-28T14:06:12.777 回答
0

如果你想要一个原始数组而不是对象,你可以使用 Trove4j。否则使用 ArrayList 或 CopyOnWriteArrayList 来包装数组。还有其他 List 实现,但这些实现不像访问时间的数组。

于 2011-09-28T16:28:37.307 回答
0

有时,如果您知道应用程序需要的对象的上限,将数组的大小声明为

static final int ARRAY_SIZE = 1000;

这接近课程的开始,因此可以轻松更改。在主代码中实例化数组

Object[] objects = new Object[ARRAY_SIZE];

此外,如果您要使用的数组与另一个数组的大小相同,请考虑使用

Object[] objects = new Object[other_objects.length];
于 2012-02-05T14:31:07.850 回答
0

您可以创建一个新数组并像这样初始化它。

String[] strArray = {"Initialize","Array","Like","This"};

如果你想要一个动态大小的数组,我建议使用 ArrayList。

于 2011-09-28T14:02:53.567 回答