我正在實施一個鏈接的鮮花列表。我已經成功地讓程序做我想做的事情。我可以顯示列表的內容,每個節點的對象的屬性,我可以在列表中做其他事情。但是,如果我只想顯示每個對象和計數的唯一出現,該怎麼辦?對象的Java鏈接列表。我如何保持每個獨特對象的數量?
因此,舉個例子,比如說,我將2個Rose對象和1個水仙花對象添加到列表中。如果我用我當前的方法顯示內容,它會在控制檯中的每一行上顯示每個對象。但我想開發一種新的查找方法,顯示如下:
There are 2 occurrences of Rose!
There are 1 occurrences of Daffodil!
用我目前的代碼,這將無法正常工作。我得到:
There is a Rose!
There is a Rose!
There is a Daffodil!
這裏是實驗find2方法我在迄今爲止的工作:
public void find2(String searchName){
Node theNode = firstNode;
int occurrences = 0;
if(!isEmpty()){
while (theNode.getItem().getName() != searchName){
if (theNode.getItem().getName().equals(searchName)){
occurrences++;
}
else if (theNode.getNext() == null){
System.out.println("Flower not found!");
return;
}
theNode = theNode.getNext();
}
System.out.println("Found " + occurrences + " occurrences of " + searchName + ".");
}
}
有什麼不對的邏輯是什麼?我試着給else添加第二個條件。它是:
else if (theNode.getNext() == null && occurrences == 0){
System.out.println("Flower not found!");
return null;
}
然而,這也沒有幫助。當我運行該程序時會發生什麼,根據我對該方法的修飾,我會輸入我想要搜索的名稱,並且它會失速 - 換句話說,控制檯讓我輸入更多的東西,但是它沒有做任何事情。或者,它會給我下面的錯誤:
Exception in thread "main" java.lang.NullPointerException
at LinkedList.find2(LinkedList.java:69)
at FinalProject.searchFlowers(FinalProject.java:81)
at FinalProject.<init>(FinalProject.java:37)
at FinalProject.main(FinalProject.java:10)
如果你想看到所有的代碼,我可以提供它。我欣賞任何提示或建議!非常感謝您的寶貴時間。
如果你比較'.equals',它解決問題的字符串? – immibis
我早些時候嘗試過,但沒有奏效。有人發佈了一個完美的解決方案,但之後他將其刪除。 – HandleThatError
可以在[TreeSet](http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html)中找到唯一有序的項目集合的行爲 - 我知道你正在設計你自己的類型,所以這可能只是很誇張,但我想指出它的存在。 –