[英]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.