如何设置Object []的长度

时间:2012-01-30 12:44:42

标签: java arrays

为什么这段代码不起作用?如何设置Object[]的长度。

Object[] entry = new Object[]{};
entry[0] = 1;
entry[1] = "1";

6 个答案:

答案 0 :(得分:5)

您必须初始化数组的大小。要么是这样的:

Object[] entry = new Object[2];
entry[0] = 1;
entry[1] = "1";

或者这样做:

Object[] entry = new Object[] {1, "1"};

干杯, 最大

答案 1 :(得分:5)

如果您正在初始化一个新数组,那么您必须使用上面答案中提到的语法明确指定其大小:

Object[] entry = new Object[2];

或使用数组初始化程序块阻止您在问题中提出的内容,如下所示:

Object[] entry = new Object[] {"a", "b"};

你在这里做的是将数组初始化为空,从而将其大小设置为0.如果打印出该数组的长度,它将为0。

如果您想要一个可以修改其大小的数组,建议您使用List接口(例如ArrayList)。

List<Object> myList = new ArrayList<Object>();

您可以使用其构造函数设置ArrayList的初始容量:

List<Object> myList = new ArrayList<Object>(2);

列表是通用的,所以你应该使用type参数,否则会收到一些警告。

如果您不知道列表中存储的对象,可以执行以下操作:

List<?> myList = new ArrayList(2);

但你会收到警告。

有关数组的更多信息:Arrays

关于列表:List interface

如果您对java Generics感兴趣:Generics

答案 2 :(得分:3)

指定大小如下:

Object[] entry = new Object[2];

您可能需要阅读本教程:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

答案 3 :(得分:3)

你需要确定这样的大小:

Object[] entry = new Object[2];

在你的例子中:

Object[] entry = new Object[]{};

您正在创建一个长度为0的数组,因此entry[0]entry[1]不存在。

答案 4 :(得分:3)

无法调整Java数组的大小。

使用new Object[2]

创建一个可以容纳两个对象的数组

或者您使用其中一个集合类,例如ArrayList

ArrayList<Object> l = new ArrayList<Object>(); 
l.add(1);
l.add("1");

答案 5 :(得分:1)

在将值设置为数组之前,只需调用ensureCapacity

private Object[] ensureCapacity(Object[] array, int position) {
    return array.length <= position ? Arrays.copyOf(array, position + 1) : array;
}

我的意思是这样的事情:

Object[] entry = new Object[]{};
entry = ensureCapacity(entry, 10);
entry[10] = 10;