2012-05-06 73 views
0

我想問一下,我如何使用ArrayList來存儲toString()。我有一個類,最後有一個toString,我必須將類的toString存儲到ArrayList中。ArrayList和toString

像這樣:音樂的名稱,作者,發行年份,現效力 字符串,字符串,整數,布爾

+10

我不確定我關注......你到底想說些什麼?你是說你在類文件的末尾聲明瞭方法嗎?您需要在本網站上儘可能具體,並且經常發佈代碼以充分理解您的問題。也歡迎來到StackOverFlow! – K2xL

+0

你的代碼在哪裏,你已經試過了什麼? –

回答

2

希望你正確格式的文本在特定類的toString()方法,
使用

List<String> listDesired = new ArrayList<String>(10); 
listDesired.add(myMusicDataClassInstance.toString()); 
+0

爲什麼將數組列表大小設置爲10? – luketorjussen

+1

@luketorjussen:爲什麼不呢?零參數構造函數的作用相同,只是隱含的。 – home

+0

@ Eng.Fouad - 感謝錯字更正。 –

1

可以使用"" + x伎倆,以避免NullPointerException的情況下x爲空:

public List<String> musicToString(List<Music> musicList) { 
    final List<String> strings = new ArrayList<String>(); 
    for (Music m : musicList) strings.add("" + m); 
    return strings; 
} 

這是有效的,因爲級聯運算符+在所有引用類型的操作數上隱式調用String.valueOf

如果那是您的審美偏好,您也可以明確地寫下String.valueOf。它也具有絕對不會實例化StringBuilder的邊際好處(儘管編譯器很可能會避免這種情況,因爲它可以看到空字符串文字)。

+0

但是也許我們想讓null出現在列表中? – luketorjussen

+0

這將使字符串「null」出現在列表中。使用'm.toString()'不會讓任何東西出現在任何地方,除了在控制檯中的NPE :) –

+2

你也可以使用String.valueOf();代替拼接。 –

0

應覆蓋toString()該類和toString()法定義的業務邏輯,將這個字符串轉換成ArrayList目的。

+0

它不會是一個適當的方法重寫,因爲'toString()'總是返回'String'。你可以重載這個方法,但是在這種情況下我也沒有看到這樣做的好處。 – Makoto

1

問題還不清楚,但如果你的對象已經有了toString()方法的定義,你不需要將它們單獨存儲在數組列表中。只需將對象添加到arrayList並執行Collections.toString(yourList);

0
List<String> listDesired = new ArrayList<String>(10); 
相關問題