簡體   English   中英

將Iterator設置為String-JAVA

[英]Set Iterator toString - JAVA

我正在做一個作業,在我的課堂上,我有一個Set以便閱讀Book類的多個作者。 我試圖弄清楚如何正確實現toString。 我會像往常一樣執行toString,然后實現如下的Iterator:

public String toString(){
       Iterator itr = set.iterator();
       while(itr.hasNext()){
           Object element = itr.next();
       }

       Return "Book, ISBN:" + isbn +", Author:" + element
}

這有任何意義嗎?

首先,您必須使用與toString完全相同的方法簽名,即:

public String toString()

其次,實現的第一行是return語句,該語句使其余行無法訪問。

第三,將return語句置於循環中始終是有爭議的。

盡管我不太確定要如何實現toString,但是您需要首先更改它們。

我本來以為是這樣的:

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("Book, isbn =" + isbn + ", Author: ");
    for (String s : authorSet) {
        sb.append(s).append(" ");
    }
    return sb.toString();
}

您必須完全匹配簽名。 使用@Override批注確定您已這樣做。 第二步看一下StringBuilder ,以小步創建一個新字符串。 但是對於這個問題,您可能只需要+就可以解決。

@Override
public String toString(){
       String retString = "Book, isbn =" + isbn + ", Author:";
       Iterator itr = set.iterator();
       while(itr.hasNext()){
           Object element = itr.next();
           retString = retString + element.toString();
       }
       return retString;
}

幾乎沒有什么可以改善的方法,我會讓您着手解決。

我相信您現在首先要遍歷整個集合,從而使element首先成為集合中的最終條目。

 while(itr.hasNext()){
       Object element = itr.next();
   }

   Return "Book, ISBN:" + isbn +", Author:" + element

現在,您的退貨將始終是同一本書的對象。

您應該嘗試更多類似的方法:

String res = "";
while(itr.hasNext()){
    res = res + element.toString() + "\n";
}return res; 

如果不使用StringBuilder,這將是一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM