使用.toArray时缺少标识符

时间:2016-04-14 02:07:40

标签: java arrays identifier

我正在开发一个使用线性和二进制搜索方法的程序。虽然我对编码很新,但我不确定在这种情况下我做错了什么。这是我认为应该相关的代码(如果你需要了解更多,请告诉我):

ArrayList <Books> list = new ArrayList <Books>();

Books[] bookslist = new Books[list.size()];
list.toArray(bookslist);

问题出在第三行。虽然我已经看到很多类似的例子使用相同的代码模式,但我似乎没有用。它只是告诉我和标识符是预期的。

正如我所说,我对此很陌生,所以我很感激有关如何纠正这个问题的任何意见或想法。虽然,请尽量保持这个简单(或至少简单解释),以便我能够理解!

谢谢你们!

2 个答案:

答案 0 :(得分:0)

这是您使用的ArrayList类的toArray()方法的声明。

public<T> T[] toArray(T[] a)

这意味着在您的情况下,调用此方法将返回 Books数组,而不是将其存储在您传递的变量中,即 bookslist

如下所示在第三行进行更改,因为该方法返回数组,您需要将其存储在某处(在您的情况下,在变量 bookslist 中)

ArrayList <Books> list = new ArrayList <Books>(); 
Books[] bookslist = new Books[list.size()]; 
bookslist = list.toArray(bookslist);

但是,ArrayList还有另一个重载的toArray方法。声明如下。

public Object[] toArray()

这意味着,如果您致电list.toArray(),它将返回图书[]

类型的对象

您可能会问,这两者之间的区别是什么?那么,参数化版本允许您对代码进行更多控制。

例如。

如果你有

ArrayList<Integer> intList = new ArrayList<Integer>();

如果您致电intList.toArray(),则会返回整数[] 但是,如果您拨打intList.toArray(new Long[intList.size]()),则会返回 Long []

答案 1 :(得分:0)

我设法解决了我的问题。我只是将以下行移到我的findButton方法中。

    Books[] bookslist = new Books[list.size()]; 
    list.toArray(bookslist);

    int referenceNum = Integer.parseInt(inputField.getText());

list.toArray(bookslist);不会在方法之外运作。所以这完全解决了我的问题。谢谢你的帮助!