数组和对象的效率

时间:2013-12-04 01:06:50

标签: java arrays object compiler-errors

测试类代码(我的编译器错误发生的地方)无法弄清楚如何使用INT类型的东西,我有3个其他类似的方法都使用Strings工作,但我知道这不是它的方式应该是int,任何指导都会很棒!

2 个答案:

答案 0 :(得分:0)

由于您通过库存编号查找Book对象,因此应使用Map结构而不是Array。使用HashMap<int, Book>:

public static void findBookByInventoryNumber(HashMap<int, Book> mapOfBooks, int inventoryNumberSearched)
{
    return mapOfBooks.get(inventoryNumberSearched);
}

答案 1 :(得分:0)

这可能比常规for循环稍好一些:

String message = "";
for(Book book : arrayOfBooks) {
    if(inventoryNumberSearched == book.getInventoryNumber() {
        message = message + book.toString()
    }
}

但是,重要的是要注意,您无法保证for each循环遍历数组的顺序,因此如果将book.toString()字符串附加到消息的顺序为所有,你可能不应该使用它。


至于你的编译器错误,这是有问题的:

message = Book.findBookByInventoryNumber(theBooks, searchInventoryNumber);

因为您的findBookByInventoryNumber()方法是void返回类型(并且您尝试将其发送到字符串变量中)。

您需要将方法的返回类型更改为String并从中返回一个字符串。

从原始方法:

public static String findBookByInventoryNumber(Book[] arrayOfBooks, int inventoryNumberSearched) 
{
    String message = "";
    for(int i = 0; i < getNumberOfBooks(); i++) {
        if(inventoryNumberSearched == arrayOfBooks[i].getInventoryNumber()) {
           message = message + arrayOfBooks[i].toString();
        }//end if
    }//end for
    return message;
}//end findByInventory