簡體   English   中英

如何顯示鏈表<string[]>在 Java</string[]>

[英]How to display LinkedList<String[]> in Java

有很多關於如何顯示 LinkedList< String > 的元素的帖子,但是對於 LinkedList< String[] >,我找不到我理解的內容。

以下代碼顯示了output : LinkedList:[[Ljava.lang.String;@5305068a, [Ljava.lang.String;@1f32e575

而我正在尋找output :LinkedList:[[Audi SQ5,341],[LandRover Discovery,306]]。

而且我不想覆蓋 toString()。

代碼

LinkedList<String[]> cars2 = new LinkedList<>();
String[] split_result = new String[2];

split_result = "Audi SQ5,341".split(",");
cars2.add(split_result);

split_result = "LandRover Discovery,306".split(",");
cars2.add(split_result);

// 顯示列表的大小

System.out.println("The size of the linked list is: " + cars2.size());

// 顯示鏈表中的字符串??? (不是他們的地址)

System.out.println("LinkedList:" + cars2);
cars2.forEach(element -> System.out.println(element));

我會為此使用 Java Stream。 它具有有用的加入收集器:

LinkedList<String[]> cars2 = new LinkedList<>();

String output = cars2
  .stream()
  .map(Arrays::toString)
  .collect(Collectors.joining(", ", "[", "]"));

你的問題是,雖然默認的 Java collections 像 LinkedList 實現了一個很好的 toString 來打印他們的成員,但 arrays 沒有。 因此,正如其他一些答案所建議的那樣,您要么必須遍歷集合並自己打印結果,要么必須將對象放入具有良好 toString 實現的 LinkedLists 中。 這些可以是 collections 本身List<List<String>> ,或者您可以定義一個 class 來包含您的數據。

class CarInfo {
    // these should be encapsulated with getters/setters, I'm being lazy.
    public String model;
    public String value; // I don't know what this represents, or if it's a string or int

    public void toString() { return model + ", " + value; }
}

如果您使用 Lombok,使用@Data注釋非常容易,它將為您生成 toString 和 getter/setter。

@Data
class CarInfo {
    String model;
    String value;
}

但是,它不會與您想要的 output 完全相同。 如果您希望它像您所描述的那樣用括號專門格式化,那么您無論如何都必須自己做 toString 。

暫無
暫無

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

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