我正在开发一个使用线性和二进制搜索方法的程序。虽然我对编码很新,但我不确定在这种情况下我做错了什么。这是我认为应该相关的代码(如果你需要了解更多,请告诉我):
ArrayList <Books> list = new ArrayList <Books>();
Books[] bookslist = new Books[list.size()];
list.toArray(bookslist);
问题出在第三行。虽然我已经看到很多类似的例子使用相同的代码模式,但我似乎没有用。它只是告诉我和标识符是预期的。
正如我所说,我对此很陌生,所以我很感激有关如何纠正这个问题的任何意见或想法。虽然,请尽量保持这个简单(或至少简单解释),以便我能够理解!
谢谢你们!
答案 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);不会在方法之外运作。所以这完全解决了我的问题。谢谢你的帮助!