使用 toString() 列印出 LinkedList
1. 簡介
在 Java 中, LinkedList
是一種常用的資料結構,允許動態記憶體分配和高效插入或刪除。有多種方法可以列印LinkedList's
元素,例如loops
、 iterators
或streams
。一個方便的方法是使用toString()
方法。
toString()
方法提供了一種簡單且可讀的方式來顯示LinkedList
的內容,而無需手動遍歷其元素。
在本教程中,我們將了解如何使用 Java 的toString()
方法列印LinkedList
。
2. LinkedList.toString()
是什麼
toString()
方法從AbstractCollection
類別繼承,並在LinkedList
類別中被重寫。此方法自動以結構化方式格式化輸出,使偵錯和日誌記錄更加容易。
此外,它消除了對顯式迭代邏輯的需求,從而降低了程式碼複雜性並提高了可維護性。 toString()
方法不接受任何參數:
public String toString()
它傳回列表的人類可讀的字串表示形式。
2.1.使用toString()
列印LinkedList
的主要優點
toString()
方法有幾個優點,可以簡化LinkedList
列印,無需手動迭代:
- 它確保程式碼清晰度,並消除了複雜循環或迭代邏輯的需要
- 格式化的字串輸出對於偵錯很有用,因為它清楚地顯示了
LinkedList
的元素,這有助於快速識別問題。 - 預設的
toString()
以普遍可理解的一致格式傳回輸出。這使得它非常適合以標準方式記錄或顯示清單內容
但是,預設的toString()
實作可能不會根據需要格式化輸出。對於這種情況,我們可以自訂方法來增強LinkedList
元素的表示。
3.如何使用toString()
方法列印LinkedList
我們可以呼叫LinkedList
上的toString()
方法以字串形式列印其內容。
在這個範例中,我們先建立一個名為idsList
的非空 LinkedList,並在其中加入一些整數值。另外,我們建立了一個名為emptyList
的空白列表:
LinkedList<Integer> idsList = new LinkedList<>();
idsList.add(101);
idsList.add(102);
idsList.add(103);
LinkedList<Integer> emptyList = new LinkedList<>();
接下來,我們使用toString()
方法明確列印名為idsList
的LinkedList
:
assertEquals("[101, 102, 103]", idsList.toString(),
"Default LinkedList toString() should match expected format.");
我們也呼叫名為emptyList
的空列表上的toString()
方法來列印它:
assertEquals("[]", emptyList.toString(),
"Empty LinkedList should return empty brackets.");
toString()
方法傳回idsList
的字串表示形式,其中元素括在方括號中並用逗號分隔。此外,它為emptyList
傳回 []。值得注意的是,使用println(idsList)
列印idsList
傳回的結果與println(idsList.toString())
相同,因為println()
方法會自動在清單上呼叫toString()
。
4.如何自訂toString()
方法
有時,預設的toString()
輸出可能不符合我們的格式需求。在這些場景中,我們可以輕鬆自訂toString()
方法來自訂輸出格式。
此外,自訂toString()
方法可以更好地控制清單元素的顯示方式,有助於偵錯複雜的資料結構。
讓我們自訂toString()
函數來顯示帶有自訂分隔符號“-”的元素。我們建立一個customToString()
方法,讓我們能夠自訂整數LinkedList
的顯示方式。我們使用delete()
方法刪除最後一個“-”:
public static String customToString(LinkedList<Integer> list) {
StringBuilder sb = new StringBuilder();
sb.append("Custom LinkedList: ");
if (list.isEmpty()) {
sb.append("Empty List");
} else {
for (Integer item : list) {
sb.append(item).append(" - ");
}
sb.delete(sb.length() - 3, sb.length());
}
return sb.toString();
}
讓我們測試customToString()
方法以確保它使用“-”分隔符號正確格式化清單元素:
String expected = "Custom LinkedList: 101 - 102 - 103";
assertEquals(expected, NewLinkedList.customToString(idsList),
"Custom toString() should format the list elements with ' - ' separator.");
當列表為空時,測試會返回“ Empty List
”;否則,它將遍歷列表並使用“-”來格式化元素:
Custom LinkedList: 101 - 102 - 103
Custom LinkedList: Empty List
5.使用toString()
方法的最佳實踐
如果預設輸出格式(即,用 [] 括起來並用逗號分隔的元素)足夠了,我們應該避免不必要地自訂方法。但是,如果我們需要特定的格式,我們應該自訂toString()
或建立一個輔助方法。
當LinkedList
儲存複雜物件時,在每個物件上呼叫toString()
可能會產生過多或不明確的輸出,在這種情況下,建議在物件的自訂類別中自訂toString()
。為了優化效能,我們在自訂toString()
時應該使用StringBuilder
而不是string concatenation
(+)。此外,自訂的toString()
輸出應該清晰且一致,尤其是對於偵錯或日誌記錄。
6. 結論
在本文中,我們探討如何使用 Java 的toString()
方法列印LinkedList
。此方法提供了清單元素的便捷顯示,使得偵錯和日誌記錄更加容易。
我們還討論了它的優點和限制以及如何自訂它以實現自訂格式。此外,我們還介紹了最佳實踐,以確保高效且可讀的輸出。透過遵循這些做法,我們可以有效地使用toString()
方法列印出LinkedList
。
最後,所有範例的原始程式碼都可以在 GitHub 上找到。