簡體   English   中英

通用功能來打印對象列表

[英]Generic Function to Print a List of Objects

當打印列表時,我不喜歡這種布局:它打印成一條長線。 我更喜歡line pro元素。

我創建了一個版本來做到這一點,但想知道是否可以做得更好。

private static void printObjectList(List<?> objects) {
    System.out.println("[");
    objects.forEach(o -> System.out.println("    " + o));
    System.out.println("]");
}

----編輯
有了Erin的一個很好的技巧,我將方法更改為:

private static void printObjectList(List<?> objects) {
    System.out.println(objects.stream()
           .map(o -> "    " + o)
           .collect(Collectors.joining("    \n", "[\n", "\n]")));
}

我只是不了解參數。 我期望:

           .collect(Collectors.joining("\n    ", "[", "\n]")));

----編輯
尚不完全正確,因為:

printObjectList(new ArrayList<Integer>());

給出:

[

]

代替:

[
]

----編輯
可以用以下方法解決:

private static void printObjectList(List<?> objects) {
    if (objects.isEmpty()) {
        System.out.println("[\n]");
    } else {
        System.out.println(objects.stream()
                           .map(o -> "    " + o)
                           .collect(Collectors.joining("\n", "[\n", "\n]")));
    }
}

----編輯
應該多想一會兒。 :'-(我真的不喜歡if。通過重寫映射並清空定界符,不再需要有條件的了:

private static void printObjectList(List<?> objects) {
    System.out.println(objects.stream()
                       .map(o -> "    " + o + "\n")
                       .collect(Collectors.joining("", "[\n", "]")));
}

您可以使用Java 8功能來代替編寫自己的方法。

例如:

System.out.println(objects.stream().map(o -> "    " + o).collect(Collectors.joining ("   \n","[\n","\n]\n")));

暫無
暫無

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

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