java - 当集合没有重写 toString() 时,如何打印集合子类内容?

标签 java tostring

Collection col=new ArrayList();
col.add("a");
col.add("b");
System.out.println(col);

java.util.collection包中的toString()方法没有被覆盖时,为什么打印集合对象会打印它的所有内容?

最佳答案

来自 ArrayList 扩展的 AbstractCollection...

/**
 * Returns a string representation of this collection.  The string
 * representation consists of a list of the collection's elements in the
 * order they are returned by its iterator, enclosed in square brackets
 * (<tt>"[]"</tt>).  Adjacent elements are separated by the characters
 * <tt>", "</tt> (comma and space).  Elements are converted to strings as
 * by {@link String#valueOf(Object)}.
 *
 * @return a string representation of this collection
 */
public String toString() {
    Iterator<E> it = iterator();
    if (! it.hasNext())
        return "[]";

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = it.next();
        sb.append(e == this ? "(this Collection)" : e);
        if (! it.hasNext())
            return sb.append(']').toString();
        sb.append(',').append(' ');
    }
}

关于java - 当集合没有重写 toString() 时,如何打印集合子类内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412848/

相关文章:

java - Eclipse 和 postgres JDBC 连接

java - java Integer.toString(arg) 方法中的 NullPointerException 可能性

class - 在 D 类中覆盖 toString()

java - 第二次单击鼠标后,JTree 节点会更改其表示形式

java - Java boolean 值是 "wrong"吗?

java - 如何使用 MYSQL 将插入的值更改为大写

java - GAE 无法查找 mongodb atlas 实例的 SRV 记录

java - 如何使用 .equals() 方法比较两个 StringBuffer 对象?

java - 将迭代器设置为字符串 - JAVA

java - 从 jsp 页面打印到打印机。使用按钮从数据库检索数据并打印