有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

很好地调试打印Java集合(toString不会返回漂亮的输出)

我希望打印Stack<Integer>对象的效果与Eclipse调试器一样好(即[1,2,3...]),但是使用out = "output:" + stack打印它不会返回这个好结果

为了澄清,我说的是Java的内置集合,所以我不能覆盖它的toString()

我怎样才能得到一个好的可打印版本的堆栈


共 (6) 个答案

  1. # 1 楼答案

    系统。出来println(集合c)已以可读格式打印任何类型的集合。只有当集合包含用户定义的对象时,才需要在用户定义的类中实现toString()来显示内容

  2. # 2 楼答案

    使用java 8流和收集器,可以轻松完成:

    String format(Collection<?> c) {
      String s = c.stream().map(Object::toString).collect(Collectors.joining(","));
      return String.format("[%s]", s);
    }
    

    首先,我们使用mapObject::toString来创建Collection<String>,然后使用联接收集器以,作为分隔符联接集合中的每个项

  3. # 3 楼答案

    String.join(",", yourIterable);
    

    (爪哇8)

  4. # 4 楼答案

    apachecommons项目提供的MapUtils类提供了一个MapUtils.debugPrint方法,它可以很好地打印地图

  5. # 5 楼答案

    番石榴看起来是个不错的选择:

    ^{}

  6. # 6 楼答案

    您可以将其转换为数组,然后用Arrays.toString(Object[])打印出来:

    System.out.println(Arrays.toString(stack.toArray()));