Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于打印对象列表的通用函数_Java - Fatal编程技术网

Java 用于打印对象列表的通用函数

Java 用于打印对象列表的通用函数,java,Java,打印列表时,我不喜欢这种布局:它被打印为一条长线。我更喜欢line pro元素 我创建了一个版本来实现这一点,但我想知道是否可以做得更好 private static void printObjectList(List<?> objects) { System.out.println("["); objects.forEach(o -> System.out.println(" " + o)); System.out.println("]"); }

打印列表时,我不喜欢这种布局:它被打印为一条长线。我更喜欢line pro元素

我创建了一个版本来实现这一点,但我想知道是否可以做得更好

private static void printObjectList(List<?> objects) {
    System.out.println("[");
    objects.forEach(o -> System.out.println("    " + o));
    System.out.println("]");
}
----编辑
这还不完全正确,因为:

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]")));
    }
}
私有静态void printObjectList(列出对象){
if(objects.isEmpty()){
System.out.println(“[\n]”);
}否则{
System.out.println(objects.stream()
.map(o->“”+o)
.collect(收集器.加入(“\n”、“[\n”、“\n]”));
}
}
----编辑
应该再考虑一下。:'-(我真的不喜欢if。通过重写映射并清空分隔符,不再需要条件:

private static void printObjectList(List<?> objects) {
    System.out.println(objects.stream()
                       .map(o -> "    " + o + "\n")
                       .collect(Collectors.joining("", "[\n", "]")));
}
私有静态void printObjectList(列出对象){
System.out.println(objects.stream()
.map(o->“+o+”\n)
.collect(收集器.joining(“,”[\n“,“]”));
}

您可以使用Java8特性,而不是编写自己的方法

例如:

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

您可以使用Java8特性,而不是编写自己的方法

例如:

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