【发布时间】:2011-09-28 14:00:12
【问题描述】:
如何在另一个类中初始化一个类的对象数组而不硬编码其大小?
【问题讨论】:
标签: java arrays collections size hardcode
如何在另一个类中初始化一个类的对象数组而不硬编码其大小?
【问题讨论】:
标签: java arrays collections size hardcode
使用List。大小不需要在创建列表时声明。 toArray() 方法将返回列表的数组表示。您可以使用多种实现,但最受欢迎的往往是 ArrayList(尽管最好将实现映射到您的特定情况)。
【讨论】:
数组在创建后具有固定大小。 编译时不需要知道大小,但确实需要在创建时知道。例如:
public String[] createArray(int size) {
// Not hard-coded, but array is not expandable
return new String[size];
}
如果您想要一个随时间增长缩小的集合,请查看各种 List<E> 实现,例如 ArrayList<E>。
【讨论】:
数组的长度是固定的。我建议使用 Collection。
这是一篇关于收藏的文章:
http://en.wikipedia.org/wiki/Java_collections_framework
有了这些,您可以使用 Add() 命令或类似的命令来添加元素。
如前面的答案所述,ArrayList 或 List 是集合。
【讨论】:
Object[] 将始终是固定大小。如果您需要可变长度的集合,请尝试使用 ArrayList、LinkedList 或其他众多方法之一。
仔细挑选集合,因为它们都有不同的性能方面。
【讨论】:
对于可变数组,使用其他容器对象。
当使用一组对象时,使用 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 及更高版本的一部分。
【讨论】:
如其他地方所述,数组对象具有固定大小。如果出于某种原因必须使用数组,则可以使用以下一种或两种技术:
让它比你需要的大,留下未使用的 条目为空。您可能希望保留一个“slotsUsed”变量。
当数组变得太小时,制作一个更大的并复制 内容。
这些都在 ArrayList 中使用。
【讨论】:
你可以创建一个新数组并像这样初始化它。
String[] strArray = {"Initialize","Array","Like","This"};
如果您想要一个动态大小的数组,我建议您使用 ArrayList。
【讨论】:
如果你想要一个原始数组而不是对象,你可以使用 Trove4j。否则使用 ArrayList 或 CopyOnWriteArrayList 来包装数组。还有其他 List 实现,但这些实现不像访问时间的数组。
【讨论】:
有时它很有用,如果您知道应用程序需要的对象的上限, 将数组的大小声明为
static final int ARRAY_SIZE = 1000;
这接近课程的开头,因此可以轻松更改。 在主代码中用
实例化数组Object[] objects = new Object[ARRAY_SIZE];
如果您要使用的数组与另一个数组的大小相同,请考虑使用
Object[] objects = new Object[other_objects.length];
【讨论】: