没有硬编码大小的Java数组声明

时间:2011-09-28 14:00:12

标签: java arrays collections size hardcode

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

9 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:3)

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

以下是关于馆藏的文章:

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

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

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

答案 3 :(得分:1)

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

仔细挑选系列,因为它们都有不同的性能方面。

答案 4 :(得分: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
}

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

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

答案 5 :(得分:1)

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

  • 使它比您需要的大,留下未使用的 条目为null。您可能希望保留“slotsUsed”变量。

  • 当数组太小时,再做一个更大的数组并复制 内容。

这些都在ArrayList中使用。

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

有时它很有用,以防您知道应用程序需要的对象的上限, 声明数组的大小为

static final int ARRAY_SIZE = 1000;

这接近课程的开头,因此可以轻松更改。 在主代码中使用

实例化数组
Object[] objects = new Object[ARRAY_SIZE];

如果您要使用的阵列与另一个阵列具有相同的大小,请考虑使用

Object[] objects = new Object[other_objects.length];