Java 链表清单程序的findItem方法
在上一次任务中,我使用数组编制了一个清单程序。我们的最后一项任务是将数组更改为链表。我们不是要使用LinkedList类,而是要创建自己的类。我让我的程序运行起来了,但我的导师说这很好,但可能会更好。主要是我的InventoryLL类中的findItem方法。我的问题是:有没有更好的方法在我的链接列表中查找项目?如有任何建议,我将不胜感激。到目前为止,我在每项作业中都取得了100%的成绩,只是努力完成得更好,并尽可能多地学习:)Java 链表清单程序的findItem方法,java,linked-list,inventory,Java,Linked List,Inventory,在上一次任务中,我使用数组编制了一个清单程序。我们的最后一项任务是将数组更改为链表。我们不是要使用LinkedList类,而是要创建自己的类。我让我的程序运行起来了,但我的导师说这很好,但可能会更好。主要是我的InventoryLL类中的findItem方法。我的问题是:有没有更好的方法在我的链接列表中查找项目?如有任何建议,我将不胜感激。到目前为止,我在每项作业中都取得了100%的成绩,只是努力完成得更好,并尽可能多地学习:) 简单的回答是,如果不将其放入一个(例如)跳过列表(skip lis
简单的回答是,如果不将其放入一个(例如)跳过列表(skip list),这是一个有序的链表,其中包含一种“快速路径”,则无法提高效率
虽然它可能有点超出范围。好吧,在你的代码中,你假设“发现”最终会实现;你应该知道这不可能发生。此外,您可以更改循环以避免使用“break”,这不是很聪明,尽管它没有错 您也可以通过参数传递inputID的值,因此对函数的调用将是
findItem(0)
(或findItem(7)
或您喜欢的任何内容)
您的列表是否已排序,可能是您可以跳过一些节点并节省一些宝贵的时间。不,它未排序。我的指导老师说我们可以,但不必分类。谢谢,我会查出来的。虽然我可能不确定我们是否可以使用跳过列表,因为我们在课堂上没有复习过。非常感谢!这是一个很大的帮助,但唯一的事情是我仍然需要返回当前如果没有找到任何东西,它将只是返回为空。如果调用findItem的任何方法获得空值,则它将显示“not found”消息。我的教练告诉我不要使用休息,谢谢。但她也提到我应该使用(!found)和(current!=null)作为复合条件。所以我又有点迷路了。你知道我该怎么做吗??提前谢谢!
public ItemNode findItem()
{
boolean found = false;
int inputID = 0;
ItemNode current = head;
try{
System.out.print("\nGreetings, please enter the ID number for item:\n");
inputID = scannerObject.nextInt();
scannerObject.nextLine();
while (found != true){
if (current.getID() == inputID){
found = true;
break;
}
current = current.getNext();
}
}catch(Exception e)
{
System.out.println("\nERROR!");
}
return current;
}
public ItemNode findItem(inputID){
boolean found = false;
for (itemNode current = head; !found; current = current.getNext()){
if (current.getID() == inputID){
found = true;
}
}
if (found) {
return current;
}
else{
System.out.println("not found"); //or some other code
}